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 Leser mit derselben Funktionalität 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 akzeptieren. 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 Funktionen wie einer besseren Konformitätsprüfung und Einhaltung 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 XmlReader Methode zu erstellenCreate.

Standardeinstellungen

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

Konfiguration 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 XmlReaderSettings-Eigenschaften, die Sie für einige der typischen XML-Leser-Szenarien festlegen sollten.

Anforderung Satz
Daten müssen ein wohlgeformtes XML-Dokument sein. ConformanceLevel auf Document.
Daten müssen eine wohlgeformte XML-analysierte Entität sein. ConformanceLevel auf Fragment.
Daten müssen anhand einer DTD überprüft werden. DtdProcessing bis Parse
ValidationType auf DTD.
Daten müssen anhand eines XML-Schemas überprüft werden. ValidationType bis Schema
Schemas zum XmlSchemaSet für die Validierung zu verwenden. Beachten Sie, dass XmlReader keine XML-Data reduzierte XDR-Schemaüberprüfung unterstützt.
Daten müssen anhand eines Inline-XML-Schemas überprüft werden. ValidationType bis Schema
ValidationFlags auf ProcessInlineSchema.
Typ-Support. ValidationType bis Schema
Schemas zu den XmlSchemaSet zu verwenden.

XmlReader unterstützt nicht die XML-Data Reduced (XDR) Schema-Validierung.

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 erfolgt der erste E/A-Vorgang mit einem Lesevorgang, so dass auftretende Ausnahmen ausgelöst werden, wenn der Lesevorgang erfolgt.

Sicherheitsüberlegungen

Standardmäßig verwendet das XmlReader-Objekt das XmlUrlResolver-Objekt ohne Benutzeranmeldeinformationen, um Ressourcen zu öffnen. 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:

  • Setzen Sie XmlResolver auf ein XmlSecureResolver Objekt, um die Ressourcen einzuschränken, auf die der XML-Reader zugreifen kann, oder...
  • Setzen Sie XmlResolver auf null, um zu 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 mit 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)

Dieses Beispiel verkettet Reader, um DTD- und XML-Schema-Validierung hinzuzufügen.

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