XmlReaderSettings.ConformanceLevel Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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 einzelnenNotationType
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. |