Share via


Überprüfen der Datenkonformität mit "XmlReader"

Aktualisiert: November 2007

Von der Create-Methode erstellte XmlReader-Objekte weisen standardmäßig eine größere Übereinstimmung als die XmlTextReader-Implementierung auf. Von der Create-Methode erstellte XmlReader-Objekte unterstützen in der Standardeinstellung die folgenden Features:

  • Normalisieren von Zeilenwechselzeichen.

  • Erweitern von Entitäten.

  • Hinzufügen von Standardattributen.

Die XmlReaderSettings.CheckCharacters-Eigenschaft und die XmlReaderSettings.ConformanceLevel-Eigenschaft ermöglichen Ihnen, die Typen der Übereinstimmungsprüfungen anzugeben, die für das erstellte XmlReader-Objekt aktiviert werden sollen.

CheckCharacters-Einstellung

Die CheckCharacters-Eigenschaft der XmlReaderSettings-Klasse weist den Reader an, Zeichen zu überprüfen und eine XmlException auszulösen, wenn sich Zeichen außerhalb des Bereichs der gültigen XML-Zeichen befinden. Bei aktivierter Zeichenüberprüfung ist Folgendes sichergestellt:

In der Standardeinstellung ist die Zeichenüberprüfung aktiviert. Bei der Verarbeitung von Textdaten überprüft der Reader die XML-Namen immer auf Gültigkeit, auch wenn die CheckCharacters-Eigenschaft auf false festgelegt ist.

ConformanceLevel-Einstellung

Die ConformanceLevel-Eigenschaft der XmlReaderSettings-Klasse konfiguriert den XmlReader so, dass er überprüft und garantiert, dass der gelesene Stream einer bestimmten Gruppe von Regeln entspricht. Je nach angegebener Übereinstimmungsebene können die XML-Daten auf Übereinstimmung mit den Regeln für ein wohlgeformtes XML 1.0-Dokument oder -Dokumentfragment überprüft werden. Wenn die Daten nicht konform sind, wird eine XmlException ausgelöst. Die Standardeinstellung ist ConformanceLevel.Document.

Hinweis:

Wenn der Reader für die Unterstützung von ConformanceLevel.Fragment konfiguriert ist, die XML-Daten jedoch eine DTD (Dokumenttypdefinition) enthalten, wird eine XmlException ausgelöst. Gemäß XML 1.0-Empfehlung muss bei vorhandener DTD eine Übereinstimmung auf Dokumentebene vorliegen.

ConformanceLevel-Wert

Beschreibung

Dokument

Die XML-Daten entsprechen den Regeln für ein wohlgeformtes XML 1.0-Dokument. Diese Ebene der Überprüfung sorgt dafür, dass alle Prozessoren den als XML 1.0-Dokument gelesenen Stream verwenden können.

Folgendes wird vom Reader überprüft:

  • Das Element der obersten Ebene darf ausschließlich folgende Knoten aufweisen: XML-Deklaration, DTD (Dokumenttypdefinition), Element, Kommentar, Leerraum und Verarbeitungsanweisung.

  • Die XML-Daten müssen genau einen Elementknoten der obersten Ebene aufweisen.

Fragment

Die XML-Daten entsprechen den Regeln für ein wohlgeformtes XML 1.0-Dokumentfragment.

Bei dieser Einstellung werden XML-Daten mit mehreren Stammelementen oder Textknoten der obersten Ebene akzeptiert. Diese Ebene der Überprüfung sorgt dafür, dass alle Prozessoren den als extern analysierte XML 1.0-Entität gelesenen Stream verwenden können.

Hinweis:

DTD ist in Fragmenten nicht zulässig.

Auto

Der Reader entscheidet anhand der eingehenden Daten, welche Ebene der Übereinstimmungsprüfung angewendet werden soll.

Wenn die XML-Daten DTD-Informationen enthalten, wird die Übereinstimmungsprüfung für Dokumente angewendet.

Die Übereinstimmungsprüfung für Fragmente wird angewendet, wenn die XML-Daten eines der folgenden Elemente enthalten:

  • Text, CDATA oder Entitätsverweisknoten auf der Stammebene.

  • Mehr als ein Element auf der Stammebene.

  • Kein Element auf der Stammebene.

Wenn ein Konflikt auftritt (z. B. wenn sich ein Textknoten und eine DTD auf der Stammebene befinden), wird eine XmlException ausgelöst.

Diese Einstellung kann in Wrappingszenarios verwendet werden, wenn mithilfe der Create-Methode einem vorhandenen XmlReader zusätzliche Features hinzugefügt werden. In diesem Fall fügt ConformanceLevel.Auto keine neue Übereinstimmungsprüfung hinzu. Die Übereinstimmungsprüfung wird dem XmlReader überlassen, für den ein Wrapper erstellt wird.

XmlTextReader-, XmlValidatingReader- und XmlNodeReader-Objekte

Die ConformanceLevel-Einstellung weist beim Arbeiten mit den Objekten XmlTextReader, XmlValidatingReader und XmlNodeReader folgendes Verhalten auf.

Beispiel

Mit dem folgenden Code wird ein Reader erstellt, der eine Übereinstimmung auf Fragmentebene erzwingt.

Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader as XmlReader = XmlReader.Create(new StringReader(xmlString), settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlString), settings);

Siehe auch

Konzepte

Lesen von XML mit dem "XmlReader"

Weitere Ressourcen

Validieren von XML-Daten mit "XmlReader"