Erstellen von XML-Readern

XmlReader-Instanzen werden mit der Create-Methode erstellt. Mit der XmlReaderSettings-Klasse wird die Gruppe von Funktionen angegeben, die für das XmlReader-Objekt aktiviert werden sollen.

Wichtiger HinweisWichtig

Obwohl Microsoft .NET Framework konkrete Implementierungen der XmlReader-Klasse enthält (z. B. die Klassen XmlTextReader, XmlNodeReader und XmlValidatingReader), wird in .NET Framework, Version 2.0, empfohlen, die XmlReader-Instanz mithilfe der Create-Methode zu erstellen.

Funktionen werden mit den Eigenschaften der XmlReaderSettings-Klasse aktiviert oder deaktiviert. Das XmlReaderSettings-Objekt wird anschließend an die Create-Methode übergeben.

Die Verwendung der Create-Methode und der XmlReaderSettings-Klasse bietet folgende Vorteile:

  • Sie können angeben, welche Funktionen für das erstellte XmlReader-Objekt unterstützt werden sollen.

  • Die XmlReaderSettings-Klasse kann erneut verwendet werden, um mehrere Readerobjekte zu erstellen. Sie können dieselben Einstellungen verwenden, um mehrere Reader mit denselben Funktionen zu erstellen. Sie können das XmlReaderSettings-Objekt auch ändern und einen neuen Reader mit anderen Funktionen erstellen.

  • Sie können einem vorhandenen Reader Funktionen hinzufügen. Die Create-Methode kann ein anderes XmlReader-Objekt annehmen. Bei dem zugrunde liegenden XmlReader-Objekt kann es sich um einen benutzerdefinierten Reader, ein XmlTextReader-Objekt oder eine andere XmlReader-Instanz handeln, dem bzw. der Sie zusätzliche Funktionen hinzufügen möchten.

  • Nutzen Sie die gesamten Vorteile aller neuen Funktionen, die der XmlReader-Klasse in .NET Framework, Version 2.0, hinzugefügt wurden. Bestimmte Funktionen (z. B. verbesserte Übereinstimmungsprüfung und Übereinstimmung mit der Empfehlung XML 1.0) sind nur in XmlReader-Objekten verfügbar, die von der Create-Methode erstellt wurden.

In der folgenden Tabelle sind die Standardeinstellungen für die Eigenschaften der XmlReaderSettings-Klasse aufgeführt.

Eigenschaft

Standardwert

CheckCharacters

true

ConformanceLevel

ConformanceLevel.Document

IgnoreComments

false

IgnoreProcessingInstructions

false

IgnoreWhitespace

false

LineNumberOffset

0.

LinePositionOffset

0

NameTable

null

DtdProcessing

Prohibit

ProhibitDtd

true. Diese Eigenschaft ist obsolet. Verwenden Sie stattdessen DtdProcessing.

Schemas

Ein leeres XmlSchemaSet-Objekt.

ValidationFlags

ProcessIdentityConstraints ist aktiviert

ValidationType

ValidationType.None

XmlResolver

Ein neues XmlUrlResolver-Objekt.

XmlReader-Szenarios

In der folgenden Tabelle werden einige häufig auftretende Szenarios sowie die aus der XmlReaderSettings-Klasse anzuwendenden Einstellungen beschrieben.

Szenario

XmlReaderSettings

Bei den Daten muss es sich um ein wohlgeformtes XML-Dokument handeln.

ConformanceLevel = ConformanceLevel.Document

Bei den Daten muss es sich um eine wohlgeformte Entität handeln, die von XML analysiert wurde.

ConformanceLevel = ConformanceLevel.Fragment

Die Daten müssen anhand einer DTD validiert werden.

DtdProcessing = DtdProcessing.Parse

ValidationType = ValidationType.DTD

Die Daten müssen anhand eines XML-Schemas validiert werden.

ValidationType = ValidationType.Schema

Schemas = Das für die Validierung verwendete XmlSchemaSet.

Die Daten müssen anhand eines XML-Inlineschemas validiert werden.

ValidationType = ValidationType.Schema

ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema

Typ muss unterstützt werden.

ValidationType = ValidationType.Schema

Schemas = Das verwendete XmlSchemaSet.

Es gibt einige besondere Szenarios, bei denen u. U. die Verwendung einer XmlReader-Implementierung erforderlich ist, die nicht von der Create-Methode erstellt wurde.

  • Falls Sie anhand eines XDR-Schemas validieren müssen, verwenden Sie die XmlValidatingReader-Klasse.
HinweisHinweis

Die XmlValidatingReader-Klasse ist in .NET Framework, Version 2.0, veraltet.Es wird empfohlen, zu XML-Schemata zu migrieren und mithilfe eines von der Create-Methode zurückgegebenen XmlReader-Objekts zu validieren.

  • Wenn Sie XML-Daten aus einem XmlNode-Objekt lesen möchten, verwenden Sie die XmlNodeReader-Klasse.

  • Falls Sie Entitäten auf Anforderung erweitern müssen (von der Create-Methode erstellte Reader erweitern alle Entitäten), oder falls der Textinhalt nicht normalisiert werden soll, verwenden Sie die XmlTextReader-Klasse.

  • Wenn keine Standardattribute zurückgegeben werden sollen, verwenden Sie die XmlTextReader-Klasse.

So instanziieren Sie ein XmlReader-Objekt

Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);

So wird Sie eine Readerinstanz in einem anderen Reader eingebettet

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

So verketten Sie Reader zum Hinzufügen zusätzlicher Einstellungen

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

Siehe auch

Konzepte

Lesen von XML mit dem "XmlReader"