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.
Wichtig |
---|
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 |
---|---|
true |
|
ConformanceLevel.Document |
|
false |
|
false |
|
false |
|
0. |
|
0 |
|
null |
|
true. Diese Eigenschaft ist obsolet. Verwenden Sie stattdessen DtdProcessing. |
|
Ein leeres XmlSchemaSet-Objekt. |
|
ProcessIdentityConstraints ist aktiviert |
|
ValidationType.None |
|
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.
Hinweis |
---|
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