XmlReaderSettings.ConformanceLevel Właściwość

Definicja

Pobiera lub ustawia poziom zgodności, który XmlReader będzie zgodny.Gets or sets the level of conformance which the XmlReader will comply.

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

Wartość właściwości

Jedna z wartości wyliczenia, która określa poziom zgodności, który będzie wymuszany przez czytnik XML.One of the enumeration values that specifies the level of conformance that the XML reader will enforce. Wartość domyślna to Document.The default is Document.

Przykłady

Poniższy przykład tworzy XmlReader obiekt, który odczytuje fragment XML.The following example creates an XmlReader object that reads an XML fragment.

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)

Uwagi

Czytelnicy XML, które są tworzone przez Create metodę, domyślnie spełniają następujące wymagania dotyczące zgodności:XML readers that are created by the Create method meet the following compliance requirements by default:

  • Nowe wiersze i wartości atrybutów są znormalizowane zgodnie z zaleceniem W3C XML 1,0.New lines and attribute value are normalized according to the W3C XML 1.0 Recommendation.

  • Wszystkie jednostki są automatycznie rozszerzane.All entities are automatically expanded.

  • Atrybuty domyślne zadeklarowane w definicji typu dokumentu są zawsze dodawane nawet wtedy, gdy czytnik nie sprawdza poprawności.Default attributes declared in the document type definition are always added even when the reader does not validate.

  • Deklaracja prefiksu XML zamapowanego na prawidłowy identyfikator URI przestrzeni nazw XML jest dozwolona.Declaration of XML prefix mapped to the correct XML namespace URI is allowed.

  • Nazwy notacji w NotationType jednoatrybutowej deklaracji i NmTokens w deklaracji jednego Enumeration atrybutu są różne.The notation names in a single NotationType attribute declaration and NmTokens in a single Enumeration attribute declaration are distinct.

Można użyć ConformanceLevel właściwości do sprawdzenia i zagwarantowania, że odczytywany strumień jest zgodny z regułami dla poprawnie sformułowanego dokumentu XML 1,0 lub fragment dokumentu.You can use the ConformanceLevel property to check and guarantee that the stream being read complies with the rules for a well-formed XML 1.0 document or document fragment. Jeśli dane nie są zgodne, XmlException zgłaszany jest wyjątek.If the data doesn't comply, an XmlException exception is thrown. Wartość domyślna to ConformanceLevel.Document (zgodność na poziomie dokumentu).The default is ConformanceLevel.Document (document-level conformance).

Trzy poziomy zgodności są następujące:The three conformance levels are:

UstawienieSetting OpisDescription
Document Zapewnia, że dane XML są zgodne z regułami dla poprawnie sformułowanego dokumentu XML 1,0.Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document. Ten poziom sprawdzania zapewnia, że każdy procesor może zużywać strumień odczytywany jako poprawnie sformułowany dokument XML 1,0.This level of checking ensures that any processor can consume the stream being read as an well-formed XML 1.0 document.

Czytnik sprawdza następujące elementy:The reader checks for the following:

-Element najwyższego poziomu nie może mieć żadnych węzłów innych niż deklaracja XML, definicja typu dokumentu (DTD), element, komentarz, biały znak lub instrukcja przetwarzania.- The top-level item must not have any nodes other than XML Declaration, document type definition (DTD), element, comment, white space, or processing instruction.
-Dane XML muszą mieć dokładnie jeden węzeł elementu najwyższego poziomu.- The XML data must have exactly one top-level element node.
Fragment Zapewnia, że dane XML są zgodne z regułami dla poprawnie sformułowanego fragmentu dokumentu XML 1,0.Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document fragment.

To ustawienie akceptuje dane XML z wieloma elementami głównymi lub węzłami tekstu na najwyższego poziomu.This setting accepts XML data with multiple root elements, or text nodes at the top-level. Ten poziom sprawdzania zapewnia, że każdy procesor może zużywać strumień odczytywany jako zewnętrzną przeanalizowana jednostkę.This level of checking ensures that any processor can consume the stream being read as an external parsed entity.
Auto Określa, że czytnik powinien określić poziom sprawdzania zgodności na podstawie danych przychodzących.Specifies that the reader should determine the level of conformance checking based on the incoming data.

Sprawdzanie zgodności dokumentów jest stosowane, jeśli dane XML zawierają informacje DTD.Document conformance checking is applied if the XML data contains DTD information.

Sprawdzanie zgodności fragmentu jest stosowane, jeśli dane XML zawierają jedną z następujących wartości:Fragment conformance checking is applied if the XML data contains one of following:

— Tekst, CDATA lub węzeł odwołania jednostki na poziomie głównym.- Text, CDATA, or entity reference node at the root level.
-Więcej niż jeden element na poziomie głównym.- More than one element at the root level.
-Brak elementu na poziomie głównym.- No element at the root level.

XmlException Jest zgłaszany w przypadku konfliktu, na przykład gdy istnieje węzeł tekstowy i DTD na poziomie głównym.An XmlException is thrown if there is a conflict, such as when there is a text node and a DTD at the root level.

To ustawienie może być używane w scenariuszach zawijania, Create gdy metoda jest używana do dodawania dodatkowych funkcji do istniejącej XmlReader.This setting can be used in wrapping scenarios when the Create method is used to add additional features to an existing XmlReader. W tym przypadku ConformanceLevel.Document nie dodaje żadnych nowych kontroli zgodności.In this case, ConformanceLevel.Document does not add any new conformance checking. Sprawdzanie zgodności jest pozostawione XmlReader z zawiniętym.Conformance checking is left to the XmlReader that is being wrapped.

Uwaga

Zalecenie XML 1,0 wymaga zgodności na poziomie dokumentu, gdy jest obecny element DTD.The XML 1.0 recommendation requires document-level conformance when a DTD is present. W związku z tym, jeśli czytnik jest skonfigurowany ConformanceLevel.Fragmentdo obsługi, ale dane XML zawierają definicję typu dokumentu (DTD) XmlException , jest zgłaszany.Therefore, if the reader is configured to support ConformanceLevel.Fragment, but the XML data contains a document type definition (DTD), an XmlException is thrown.

Poniżej przedstawiono sposób, w jaki czytnik obsługuje określone naruszenia zgodności, w zależności od ustawienia ConformanceLevel właściwości:Here's how the reader handles specific conformance violations depending on the setting of the ConformanceLevel property:

WarunekCondition Document Fragment Auto
Tekst lub wartość o określonym typie pojawia się na najwyższym poziomie.Text or a typed value appears at the top level. XmlExceptionjest zgłaszany.XmlException is thrown. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting.
Na najwyższego poziomu występuje wiele elementów lub nie ma elementów.Multiple elements or no element appear at the top level. XmlExceptionjest zgłaszany.XmlException is thrown. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting.
Element najwyższego poziomu jest białym znakiem.Top-level item is white space. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting.
Element najwyższego poziomu jest atrybutem (rozpoznany jako węzeł tekstowy).Top-level item is an attribute (recognized as a text node). XmlExceptionjest zgłaszany.XmlException is thrown. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting.
Znaleziono wiele węzłów ciągłego tekstu.Multiple, contiguous text nodes are found. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting. Nie jest uważany za naruszenie tego ustawienia.Not considered a violation for this setting.
Ten sam prefiks przestrzeni nazw jest zadeklarowany dwa razy w tym samym zakresie lokalnym.The same namespace prefix is declared twice in the same local scope. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown.
Przestrzeń nazw w elemencie lub atrybucie nie istnieje w zakresie lokalnym.The namespace in an element or attribute doesn't exist in the local scope. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown.
Dane zawierają niezgodność przestrzeni nazw z prefiksem.Data contains a prefix-namespace mismatch. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown.
xml:spaceatrybut zawiera nieprawidłową wartość.xml:space attribute contains an invalid value. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown.
Napotkano nieprawidłową nazwę.An invalid name is encountered. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown.
Prefiks nie jest zgodny http://www.w3.org/XML/1998/namespace z identyfikatorem URI. xmlThe xml prefix isn't matched to the http://www.w3.org/XML/1998/namespace URI. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown. XmlExceptionjest zgłaszany.XmlException is thrown.

Dotyczy

Zobacz też