System.Xml.XmlReader.Create-metoder

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 null fö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