Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Den här artikeln innehåller ytterligare kommentarer till referensdokumentationen för det här API:et.
De flesta överlagringar Create innehåller en settings parameter som accepterar ett XmlReaderSettings objekt. Du kan använda det här objektet för att:
- Ange vilka funktioner som ska stödjas på XmlReader objektet.
- Återanvänd objektet XmlReaderSettings för att skapa flera läsare. Du kan använda samma inställningar för att skapa flera läsare med samma funktioner. Eller så kan du ändra inställningarna på en XmlReaderSettings instans och skapa en ny läsare med en annan uppsättning funktioner.
- Lägg till funktioner i en befintlig XML-läsare. Metoden Create kan acceptera ett annat XmlReader objekt. Det underliggande XmlReader objektet kan vara en användardefinierad läsare, ett objekt eller en XmlTextReader annan XmlReader instans som du vill lägga till ytterligare funktioner i.
- Dra full nytta av funktioner som bättre efterlevnadskontroll och efterlevnad av XML 1.0-rekommendationen (fjärde utgåvan) som endast är tillgängliga för XmlReader objekt som skapats med den statiska Create metoden.
Anmärkning
Även om .NET innehåller konkreta implementeringar av XmlReader klassen, till exempel klasserna XmlTextReader, XmlNodeReaderoch XmlValidatingReader , rekommenderar vi att du skapar XmlReader instanser med hjälp Create av metoden .
Standardinställningarna
Om du använder en Create överlagring som inte accepterar ett XmlReaderSettings objekt används följande standardinställningar för läsare:
| Inställning | Förinställning |
|---|---|
| CheckCharacters | true |
| ConformanceLevel | ConformanceLevel.Document |
| IgnoreComments | false |
| IgnoreProcessingInstructions | false |
| IgnoreWhitespace | false |
| LineNumberOffset | 0 |
| LinePositionOffset | 0 |
| NameTable | null |
| DtdProcessing | Prohibit |
| Schemas | Ett tomt XmlSchemaSet objekt |
| ValidationFlags | ProcessIdentityConstraints Aktiverat |
| ValidationType | None |
| XmlResolver | null |
Inställningar för vanliga scenarier
Här är de XmlReaderSettings egenskaper som du bör ange för några av de typiska XML-läsarscenarierna.
| Krav | Ställ in |
|---|---|
| Data måste vara ett välformat XML-dokument. | ConformanceLevel till Document. |
| Data måste vara en välformulerad XML-parsad entitet. | ConformanceLevel till Fragment. |
| Data måste verifieras mot en DTD. |
DtdProcessing till Parse ValidationType till DTD. |
| Data måste verifieras mot ett XML-schema. |
ValidationType till Schema Schemas till som XmlSchemaSet ska användas för validering. Observera att XmlReader inte stöder schemaverifiering av XML-Data reducerad (XDR). |
| Data måste verifieras mot ett infogat XML-schema. |
ValidationType till Schema ValidationFlags till ProcessInlineSchema. |
| Typstöd. |
ValidationType till Schema Schemas till att XmlSchemaSet använda. |
XmlReader stöder inte schemaverifiering av XML-Data reducerad (XDR).
Asynkron programmering
I synkront läge Create läser metoden det första datasegmentet från bufferten för filen, dataströmmen eller textläsaren. Detta kan utlösa ett undantag om en I/O-åtgärd misslyckas. I asynkront läge sker den första I/O-åtgärden med en läsåtgärd, så undantag som uppstår utlöses när läsåtgärden inträffar.
Säkerhetsfrågor
Som standard XmlReader använder XmlUrlResolver ett objekt utan användarautentiseringsuppgifter för att öppna resurser. Det innebär att XML-läsaren som standard kan komma åt alla platser som inte kräver autentiseringsuppgifter. Använd egenskapen XmlResolver för att styra åtkomsten till resurser:
- Ange XmlResolver till ett XmlSecureResolver objekt för att begränsa de resurser som XML-läsaren kan komma åt, eller...
- Ange XmlResolver till
nullför att förhindra att XML-läsaren öppnar externa resurser.
Exempel
Det här exemplet skapar en XML-läsare som tar bort obetydligt tomt utrymme, tar bort kommentarer och utför överensstämmelsekontroller på fragmentnivå.
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)
I följande exempel används en XmlUrlResolver med standardautentiseringsuppgifter för att komma åt en fil.
// 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)
Följande kod omsluter en läsarinstans i en annan läsare.
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)
Det här exemplet kedjar läsare för att lägga till DTD- och XML-schemavalidering.
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