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.
Dient zum Abrufen oder Festlegen der Konformitätsstufe, mit der der XmlReader Wert eingehalten wird.
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, die die Konformitätsstufe angibt, die der XML-Reader erzwingt. Der Standardwert lautet 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.
In der Dokumenttypdefinition deklarierte Standardattribute werden immer hinzugefügt, auch wenn der Leser nicht überprüft.
Die Deklaration des XML-Präfixes, das dem richtigen XML-Namespace-URI zugeordnet ist, ist zulässig.
Die Notationsnamen in einer einzelnen
NotationTypeAttributdeklaration undNmTokensin einer einzelnenEnumerationAttributdeklaration sind unterschiedlich.
Sie können die ConformanceLevel Eigenschaft verwenden, um zu überprüfen und sicherzustellen, dass der zu lesende Datenstrom den Regeln für ein wohlgeformtes XML 1.0-Dokument- oder Dokumentfragment entspricht. Wenn die Daten nicht konform sind, wird eine XmlException Ausnahme ausgelöst. Der Standardwert ist ConformanceLevel.Document (Übereinstimmung auf Dokumentebene).
Die drei Konformitätsstufen sind:
| Setting | Beschreibung |
|---|---|
| Document | Stellt sicher, dass die XML-Daten den Regeln für ein wohlgeformtes XML 1.0-Dokument entsprechen. Diese Überprüfungsebene stellt sicher, dass jeder Prozessor den zu lesenden Datenstrom als wohlgeformte XML 1.0-Dokument nutzen kann. Der Leser sucht folgendes: - Das Element auf oberster Ebene darf keine anderen Knoten als XML-Deklaration, Dokumenttypdefinition (DTD), Element, Kommentar, Leerzeichen oder Verarbeitungsanweisung aufweisen. – Die XML-Daten müssen genau einen Elementknoten der obersten Ebene aufweisen. |
| Fragment | Stellt sicher, dass die XML-Daten den Regeln für ein wohlgeformtes XML 1.0-Dokumentfragment entsprechen. Diese Einstellung akzeptiert XML-Daten mit mehreren Stammelementen oder Textknoten auf oberster Ebene. 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. Die Dokumentkonformitätsprüfung wird angewendet, wenn die XML-Daten DTD-Informationen enthalten. Die Überprüfung der Fragmentkonformität wird angewendet, wenn die XML-Daten eine der folgenden Elemente enthalten: - Text-, CDATA- oder Entitätsverweisknoten auf der Stammebene. - Mehrere Elemente auf der Stammebene. - Kein Element auf der Stammebene. Ein XmlException Fehler wird ausgelöst, wenn ein Konflikt vorliegt, z. B. wenn ein Textknoten und eine DTD auf der Stammebene vorhanden sind. Diese Einstellung kann in Umbruchszenarien verwendet werden, wenn die Create Methode verwendet wird, um einem vorhandenen Feature XmlReaderzusätzliche Features hinzuzufügen. In diesem Fall ConformanceLevel.Document werden keine neuen Konformitätsüberprüfungen hinzugefügt. Die Konformitätsüberprüfung bleibt dem XmlReader umschlossenen. |
Hinweis
Die XML 1.0-Empfehlung erfordert die Konformität auf Dokumentebene, wenn eine DTD vorhanden ist. Daher wird ein ConformanceLevel.Fragment ausgelöst, wenn der Reader für die Unterstützung von XmlException konfiguriert ist, aber die XML-Daten eine Dokumenttypdefinition (DTD) enthalten.
Hier erfahren Sie, wie der Leser bestimmte Konformitätsverletzungen abhängig von der Einstellung der ConformanceLevel Eigenschaft behandelt:
| Zustand | Document | Fragment | Auto |
|---|---|---|---|
| Text oder ein eingegebener Wert wird auf der obersten Ebene angezeigt. | XmlException wird ausgelöst. | Wird für diese Einstellung nicht als Verstoß angesehen. | Wird für diese Einstellung nicht als Verstoß angesehen. |
| Mehrere Elemente oder kein Element werden auf der obersten Ebene angezeigt. | XmlException wird ausgelöst. | Wird für diese Einstellung nicht als Verstoß angesehen. | Wird für diese Einstellung nicht als Verstoß angesehen. |
| Element auf oberster Ebene ist Leerraum. | Wird für diese Einstellung nicht als Verstoß angesehen. | Wird für diese Einstellung nicht als Verstoß angesehen. | Wird für diese Einstellung nicht als Verstoß angesehen. |
| Element der obersten Ebene ist ein Attribut (als Textknoten erkannt). | XmlException wird ausgelöst. | Wird für diese Einstellung nicht als Verstoß angesehen. | Wird für diese Einstellung nicht als Verstoß angesehen. |
| Es werden mehrere zusammenhängende Textknoten gefunden. | Wird für diese Einstellung nicht als Verstoß angesehen. | Wird für diese Einstellung nicht als Verstoß angesehen. | Wird für diese Einstellung nicht als Verstoß angesehen. |
| 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äfixnamespace-Konflikt. | XmlException wird ausgelöst. | XmlException wird ausgelöst. | XmlException wird ausgelöst. |
xml:space das Attribut einen ungültigen Wert enthält. |
XmlException wird ausgelöst. | XmlException wird ausgelöst. | XmlException wird ausgelöst. |
| Es ist ein ungültiger Name aufgetreten. | XmlException wird ausgelöst. | XmlException wird ausgelöst. | XmlException wird ausgelöst. |
Das xml Präfix ist nicht mit dem http://www.w3.org/XML/1998/namespace URI übereinstimmt. |
XmlException wird ausgelöst. | XmlException wird ausgelöst. | XmlException wird ausgelöst. |