Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
In dit artikel vindt u aanvullende opmerkingen in de referentiedocumentatie voor deze API.
Create De meeste overbelastingen bevatten een settings parameter die een XmlReaderSettings object accepteert. U kunt dit object gebruiken voor het volgende:
- Geef op welke functies u wilt ondersteunen voor het XmlReader object.
- Gebruik het XmlReaderSettings object opnieuw om meerdere lezers te maken. U kunt dezelfde instellingen gebruiken om meerdere lezers met dezelfde functionaliteit te maken. U kunt ook de instellingen op een XmlReaderSettings exemplaar wijzigen en een nieuwe lezer maken met een andere set functies.
- Voeg functies toe aan een bestaande XML-lezer. De Create methode kan een ander XmlReader object accepteren. Het onderliggende XmlReader object kan een door de gebruiker gedefinieerde lezer, een XmlTextReader object of een ander XmlReader exemplaar zijn waaraan u extra functies wilt toevoegen.
- Profiteer optimaal van functies zoals betere nalevingscontrole en naleving van de aanbeveling xml 1.0 (vierde editie) die alleen beschikbaar zijn voor XmlReader objecten die door de statische Create methode zijn gemaakt.
Opmerking
Hoewel .NET concrete implementaties van de XmlReader klasse bevat, zoals de XmlTextReader, XmlNodeReaderen de XmlValidatingReader klassen, raden we u aan om exemplaren te maken XmlReader met behulp van de Create methode.
Standaardinstellingen
Als u een Create overbelasting gebruikt die geen XmlReaderSettings object accepteert, worden de volgende standaardinstellingen voor lezer gebruikt:
| Configuratie | Verstek |
|---|---|
| CheckCharacters | true |
| ConformanceLevel | ConformanceLevel.Document |
| IgnoreComments | false |
| IgnoreProcessingInstructions | false |
| IgnoreWhitespace | false |
| LineNumberOffset | 0 |
| LinePositionOffset | 0 |
| NameTable | null |
| DtdProcessing | Prohibit |
| Schemas | Een leeg XmlSchemaSet object |
| ValidationFlags | ProcessIdentityConstraints Ingeschakeld |
| ValidationType | None |
| XmlResolver | null |
Instellingen voor algemene scenario's
Hier volgen de XmlReaderSettings eigenschappen die u moet instellen voor een aantal typische XML-lezerscenario's.
| Voorwaarde | Stel in |
|---|---|
| Gegevens moeten een goed opgemaakt XML-document zijn. | ConformanceLevel tot Document. |
| Gegevens moeten een goed opgemaakte XML-geparseerde entiteit zijn. | ConformanceLevel tot Fragment. |
| Gegevens moeten worden gevalideerd op basis van een DTD. |
DtdProcessing tot en met Parse ValidationType tot DTD. |
| Gegevens moeten worden gevalideerd op basis van een XML-schema. |
ValidationType tot en met Schema Schemas naar het XmlSchemaSet te gebruiken voor validatie. Houd er rekening mee dat XmlReader geen ondersteuning biedt voor Reduced XML-Data schemavalidatie (XDR). |
| Gegevens moeten worden gevalideerd op basis van een inline XML-schema. |
ValidationType tot en met Schema ValidationFlags tot ProcessInlineSchema. |
| Typ ondersteuning. |
ValidationType tot en met Schema SchemasnaarXmlSchemaSet te gebruiken. |
XmlReader biedt geen ondersteuning voor XML-Data XDR-schemavalidatie (Reduced).
Asynchroon programmeren
In de synchrone modus leest de Create methode het eerste segment gegevens uit de buffer van het bestand, de stream of de tekstlezer. Dit kan een uitzondering veroorzaken als een I/O-bewerking mislukt. In de asynchrone modus vindt de eerste I/O-bewerking plaats met een leesbewerking, waardoor uitzonderingen optreden wanneer de leesbewerking plaatsvindt.
Beveiligingsoverwegingen
XmlReader Standaard wordt een XmlUrlResolver object zonder gebruikersreferenties gebruikt om resources te openen. Dit betekent dat de XML-lezer standaard toegang heeft tot elke locatie waarvoor geen referenties zijn vereist. Gebruik de XmlResolver eigenschap om toegang tot resources te beheren.
- Instellen XmlResolver op een XmlSecureResolver object om de resources te beperken waartoe de XML-lezer toegang heeft, of...
- Stel XmlResolver in op
nullom te voorkomen dat de XML-lezer externe resources opent.
Voorbeelden
In dit voorbeeld wordt een XML-lezer gemaakt die onbeduidende witruimte verwijdert, opmerkingen verwijdert en nalevingscontrole op fragmentniveau uitvoert.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
In het volgende voorbeeld wordt een XmlUrlResolver met standaardreferenties gebruikt om toegang te krijgen tot een bestand.
// Set the reader settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreWhitespace = true;
' Set the reader settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.IgnoreComments = true
settings.IgnoreProcessingInstructions = true
settings.IgnoreWhitespace = true
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;
// Create the XmlReader object.
XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings);
' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials
' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver
' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("http://ServerName/data/books.xml", settings)
Met de volgende code wordt een lezerinstantie in een andere lezer verpakt.
XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);
Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)
In dit voorbeeld worden lezers gedwongen om DTD- en XML-schemavalidatie toe te voegen.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings); // XML Schema Validation
Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings) ' XML Schema Validation