Freigeben über


System.Xml.XmlReader.Create-Methoden

Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.

Create Die meisten Überladungen enthalten einen settings Parameter, der ein XmlReaderSettings Objekt akzeptiert. Sie können dieses Objekt verwenden, um:

  • Geben Sie an, welche Features für das XmlReader Objekt unterstützt werden sollen.
  • Verwenden Sie das XmlReaderSettings Objekt wieder, um mehrere Leser zu erstellen. Sie können dieselben Einstellungen verwenden, um mehrere Reader mit denselben Funktionen zu erstellen. Oder Sie können die Einstellungen für eine XmlReaderSettings Instanz ändern und einen neuen Reader mit einem anderen Satz von Features erstellen.
  • Hinzufügen von Features zu einem vorhandenen XML-Reader. Die Create-Methode kann ein anderes XmlReader-Objekt annehmen. Das zugrunde liegende XmlReader Objekt kann ein benutzerdefinierter Reader, ein XmlTextReader Objekt oder eine andere XmlReader Instanz sein, der Sie zusätzliche Features hinzufügen möchten.
  • Nutzen Sie die vorteile von Features wie einer besseren Konformitätsüberprüfung und -konformität mit der XML 1.0-Empfehlung (vierte Edition), die nur für XmlReader Objekte verfügbar sind, die von der statischen Create Methode erstellt wurden.

Hinweis

Obwohl .NET konkrete Implementierungen der XmlReader Klasse enthält, z. B. das XmlTextReader, XmlNodeReaderund die XmlValidatingReader Klassen, empfehlen wir, Instanzen mithilfe der Create Methode zu erstellenXmlReader.

Standardeinstellungen

Wenn Sie eine Create Überladung verwenden, die kein XmlReaderSettings Objekt akzeptiert, werden die folgenden Standardsprachausgabeeinstellungen verwendet:

Einstellung Standard
CheckCharacters true
ConformanceLevel ConformanceLevel.Document
IgnoreComments false
IgnoreProcessingInstructions false
IgnoreWhitespace false
LineNumberOffset 0
LinePositionOffset 0
NameTable null
DtdProcessing Prohibit
Schemas Ein leeres XmlSchemaSet-Objekt.
ValidationFlags ProcessIdentityConstraints Aktiviert
ValidationType None
XmlResolver null

Einstellungen für häufige Szenarios

Hier sind die Eigenschaften, die XmlReaderSettings Sie für einige der typischen XML-Reader-Szenarien festlegen sollten.

Anforderung Set
Daten müssen ein wohlgeformtes XML-Dokument sein. ConformanceLevel in Document.
Daten müssen eine wohlgeformte XML-analysierte Entität sein. ConformanceLevel in Fragment.
Daten müssen anhand einer DTD überprüft werden. DtdProcessing bis Parse
ValidationType in DTD.
Daten müssen anhand eines XML-Schemas überprüft werden. ValidationType bis Schema
Schemas für die XmlSchemaSet Überprüfung zu verwenden. Beachten Sie, dass XmlReader die XML-Data Reduced (XDR)-Schemaüberprüfung nicht unterstützt wird.
Daten müssen anhand eines Inline-XML-Schemas überprüft werden. ValidationType bis Schema
ValidationFlags in ProcessInlineSchema.
Geben Sie Unterstützung ein. ValidationType bis Schema
Schemas zu verwenden XmlSchemaSet .

XmlReader unterstützt keine XDR-Schemavalidierung (XML-Data Reduced).

Asynchrone Programmierung

Im synchronen Modus liest die Create Methode den ersten Datenabschnitt aus dem Puffer der Datei, des Datenstroms oder des Textlesers. Dies kann eine Ausnahme auslösen, wenn ein E/A-Vorgang fehlschlägt. Im asynchronen Modus tritt der erste E/A-Vorgang mit einem Lesevorgang auf, sodass Ausnahmen ausgelöst werden, wenn der Lesevorgang auftritt.

Sicherheitshinweise

Standardmäßig verwendet XmlUrlResolver das XmlReader Objekt ohne Benutzeranmeldeinformationen zum Öffnen von Ressourcen. Dies bedeutet, dass der XML-Reader standardmäßig auf jeden Speicherort zugreifen kann, an dem keine Anmeldeinformationen erforderlich sind. Verwenden Sie die XmlResolver Eigenschaft, um den Zugriff auf Ressourcen zu steuern:

  • Auf ein XmlSecureResolver Objekt festlegenXmlResolver, um die Ressourcen einzuschränken, auf die der XML-Reader zugreifen kann, oder...
  • Legen Sie XmlResolver fest, um zu null verhindern, dass der XML-Reader externe Ressourcen öffnet.

Beispiele

In diesem Beispiel wird ein XML-Reader erstellt, der unbedeutende Leerzeichen entfernt, Kommentare entfernt und die Konformitätsüberprüfung auf Fragmentebene durchführt.

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)

Im folgenden Beispiel wird ein XmlUrlResolver Standardanmeldeinformationen für den Zugriff auf eine Datei verwendet.

// 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)

Der folgende Code umschließt eine Reader-Instanz innerhalb eines anderen Readers.

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 diesem Beispiel werden Leser so verkettet, dass die DTD- und XML-Schemaüberprüfung hinzugefügt werden.

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