XmlReaderSettings.ConformanceLevel Eigenschaft

Definition

Ruft den Konformitätsgrad ab, dem der XmlReader entspricht, oder legt diesen fest.

public:
 property System::Xml::ConformanceLevel ConformanceLevel { System::Xml::ConformanceLevel get(); void set(System::Xml::ConformanceLevel value); };
public System.Xml.ConformanceLevel ConformanceLevel { get; set; }
member this.ConformanceLevel : System.Xml.ConformanceLevel with get, set
Public Property ConformanceLevel As ConformanceLevel

Eigenschaftswert

ConformanceLevel

Einer der Enumerationswerte, der das Übereinstimmungsniveau angibt, den der XML-Reader umsetzt. Der Standardwert ist Document.

Beispiele

Im folgenden Beispiel wird ein XmlReader Objekt erstellt, das ein XML-Fragment liest.

string xmlFrag ="<item rk:ID='abc-23'>hammer</item> " +
                        "<item rk:ID='r2-435'>paint</item>" +
                        "<item rk:ID='abc-39'>saw</item>";

// Create the XmlNamespaceManager.
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("rk", "urn:store-items");

// Create the XmlParserContext.
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);

// Create the reader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlFrag), settings, context);
Dim xmlFrag As String = "<item rk:ID='abc-23'>hammer</item> " & _
                                     "<item rk:ID='r2-435'>paint</item>" & _
                                     "<item rk:ID='abc-39'>saw</item>"

' Create the XmlNamespaceManager.
Dim nt As New NameTable()
Dim nsmgr As New XmlNamespaceManager(nt)
nsmgr.AddNamespace("rk", "urn:store-items")

' Create the XmlParserContext.
Dim context As New XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)

' Create the reader. 
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader As XmlReader = XmlReader.Create(New StringReader(xmlFrag), settings, context)

Hinweise

XML-Reader, die von der Create Methode erstellt werden, erfüllen standardmäßig die folgenden Complianceanforderungen:

  • Neue Zeilen und Attributwerte werden gemäß der W3C XML 1.0-Empfehlung normalisiert.

  • Alle Entitäten werden automatisch erweitert.

  • Standardattribute, die in der Dokumenttypdefinition deklariert sind, werden immer hinzugefügt, auch wenn der Leser nicht überprüft wird.

  • Die Deklaration des XML-Präfixes, das dem richtigen XML-Namespace-URI zugeordnet ist, ist zulässig.

  • Die Notationsnamen in einer einzelnen Attributdeklaration und NmTokens in einer einzelnen NotationType Enumeration Attributdeklaration sind unterschiedlich.

Sie können die ConformanceLevel Eigenschaft verwenden, um zu überprüfen und sicherzustellen, dass der gelesene Datenstrom den Regeln für ein gut gebildetes XML 1.0-Dokument oder Dokumentfragment entspricht. Wenn die Daten nicht eingehalten werden, wird eine XmlException Ausnahme ausgelöst. Der Standardwert ist ConformanceLevel.Document (Übereinstimmung auf Dokumentebene).

Die drei Konformitätsstufen sind:

Einstellung BESCHREIBUNG
Document Stellt sicher, dass die XML-Daten den Regeln für ein gut gebildetes XML 1.0-Dokument entsprechen. Diese Überprüfungsebene stellt sicher, dass jeder Prozessor den Datenstrom nutzen kann, der als gut gebildetes XML 1.0-Dokument gelesen wird.

Folgendes wird vom Reader überprüft:

- Das Element der obersten Ebene darf keine anderen Knoten als XML-Deklaration, Dokumenttypdefinition (DTD), Element, Kommentar, Leerzeichen oder Verarbeitungsanweisung aufweisen.
- Die XML-Daten müssen genau einen Elementknoten auf oberster Ebene aufweisen.
Fragment Stellt sicher, dass die XML-Daten den Regeln für ein gut gebildetes XML 1.0-Dokumentfragment entsprechen.

Bei dieser Einstellung werden XML-Daten mit mehreren Stammelementen oder Textknoten der obersten Ebene akzeptiert. Diese Überprüfungsebene stellt sicher, dass jeder Prozessor den Datenstrom nutzen kann, der als externe analysierte Entität gelesen wird.
Auto Gibt an, dass der Leser die Konformitätsüberprüfung basierend auf den eingehenden Daten bestimmen 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 Stammebene.
- Mehrere Elemente 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 Funktionen hinzugefügt werden. In diesem Fall ConformanceLevel.Document werden keine neuen Konformitätsüberprüfungen hinzugefügt. Die Übereinstimmungsprüfung wird dem XmlReader überlassen, für den ein Wrapper erstellt wird.

Hinweis

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

Hier erfahren Sie, wie der Leser bestimmte Konformitätsverletzungen je nach Einstellung der ConformanceLevel Eigenschaft behandelt:

Bedingung Document Fragment Auto
Text oder ein typierter Wert wird auf oberster Ebene angezeigt. XmlException wird ausgelöst. Für diese Einstellung gilt kein Verstoß. Für diese Einstellung gilt kein Verstoß.
Mehrere Elemente oder kein Element werden auf oberster Ebene angezeigt. XmlException wird ausgelöst. Für diese Einstellung gilt kein Verstoß. Für diese Einstellung gilt kein Verstoß.
Das Element auf oberster Ebene ist Leerzeichen. Für diese Einstellung gilt kein Verstoß. Für diese Einstellung gilt kein Verstoß. Für diese Einstellung gilt kein Verstoß.
Element auf oberster Ebene ist ein Attribut (als Textknoten erkannt). XmlException wird ausgelöst. Für diese Einstellung gilt kein Verstoß. Für diese Einstellung gilt kein Verstoß.
Es werden mehrere aneinandergrenzende Textknoten gefunden. Für diese Einstellung gilt kein Verstoß. Für diese Einstellung gilt kein Verstoß. Für diese Einstellung gilt kein Verstoß.
Dasselbe Namespacepräfix wird zweimal im gleichen lokalen Bereich deklariert. XmlException wird ausgelöst. XmlException wird ausgelöst. XmlException wird ausgelöst.
Der Namespace in einem Element oder Attribut ist im lokalen Bereich nicht vorhanden. XmlException wird ausgelöst. XmlException wird ausgelöst. XmlException wird ausgelöst.
Daten enthalten einen Präfix-Namespace-Missübereinstimmung. XmlException wird ausgelöst. XmlException wird ausgelöst. XmlException wird ausgelöst.
xml:space Attribut enthält einen ungültigen Wert. XmlException wird ausgelöst. XmlException wird ausgelöst. XmlException wird ausgelöst.
Es wurde ein ungültiger Name gefunden. XmlException wird ausgelöst. XmlException wird ausgelöst. XmlException wird ausgelöst.
Das xml Präfix wird nicht mit dem http://www.w3.org/XML/1998/namespace URI übereinstimmen. XmlException wird ausgelöst. XmlException wird ausgelöst. XmlException wird ausgelöst.

Gilt für

Siehe auch