XmlReaderSettings.ConformanceLevel Właściwość

Definicja

Pobiera lub ustawia poziom zgodności, który XmlReader będzie zgodny.

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

ConformanceLevel

Jedna z wartości wyliczenia określająca poziom zgodności, który będzie wymuszany przez czytnik XML. Wartość domyślna to Document.

Przykłady

Poniższy przykład tworzy XmlReader obiekt, który odczytuje fragment XML.

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

Czytniki XML, które są tworzone przez metodę Create , domyślnie spełniają następujące wymagania dotyczące zgodności:

  • Nowe wiersze i wartość atrybutu są znormalizowane zgodnie z zaleceniem W3C XML 1.0.

  • Wszystkie jednostki są automatycznie rozszerzane.

  • Atrybuty domyślne zadeklarowane w definicji typu dokumentu są zawsze dodawane nawet wtedy, gdy czytnik nie weryfikuje.

  • Deklaracja prefiksu XML mapowanego na prawidłowy identyfikator URI przestrzeni nazw XML jest dozwolony.

  • Nazwy notacji w pojedynczej NotationType deklaracji atrybutu i NmTokens w pojedynczej Enumeration deklaracji atrybutu są odrębne.

Można użyć ConformanceLevel właściwości , aby sprawdzić i zagwarantować, że odczyt strumienia jest zgodny z regułami dla dobrze sformułowanego dokumentu XML 1.0 lub fragmentu dokumentu. Jeśli dane nie są zgodne, XmlException zgłaszany jest wyjątek. Wartość domyślna to ConformanceLevel.Document (zgodność na poziomie dokumentu).

Trzy poziomy zgodności to:

Ustawienie Opis
Document Gwarantuje, że dane XML są zgodne z regułami dobrze sformułowanego dokumentu XML 1.0. Ten poziom sprawdzania zapewnia, że każdy procesor może korzystać ze strumienia odczytywanego jako dobrze sformułowanego dokumentu XML 1.0.

Czytelnik sprawdza następujące kwestie:

— 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.
— Dane XML muszą mieć dokładnie jeden węzeł elementu najwyższego poziomu.
Fragment Zapewnia zgodność danych XML z regułami fragmentu dokumentu XML 1.0.

To ustawienie akceptuje dane XML z wieloma elementami głównymi lub węzłami tekstowymi na najwyższym poziomie. Ten poziom sprawdzania zapewnia, że każdy procesor może korzystać ze strumienia odczytywanego jako zewnętrzna jednostka analizowana.
Auto Określa, że czytelnik powinien określić poziom sprawdzania zgodności na podstawie danych przychodzących.

Sprawdzanie zgodności dokumentu jest stosowane, jeśli dane XML zawierają informacje DTD.

Sprawdzanie zgodności fragmentów jest stosowane, jeśli dane XML zawierają jedną z następujących czynności:

— węzeł tekstowy, CDATA lub węzeł odwołania do jednostki na poziomie głównym.
— Więcej niż jeden element na poziomie głównym.
- Brak elementu na poziomie głównym.

Element XmlException jest zgłaszany, jeśli występuje konflikt, na przykład w przypadku wystąpienia węzła tekstowego i dtD na poziomie głównym.

To ustawienie może być używane w scenariuszach opakowywania, gdy Create metoda jest używana do dodawania dodatkowych funkcji do istniejącego XmlReaderelementu . W takim przypadku ConformanceLevel.Document nie dodaje żadnych nowych kontroli zgodności. Sprawdzanie zgodności pozostaje w opakowaniu XmlReader .

Uwaga

Zalecenie XML 1.0 wymaga zgodności na poziomie dokumentu, gdy istnieje dtD. W związku z tym, jeśli czytnik jest skonfigurowany do obsługi ConformanceLevel.Fragment, ale dane XML zawierają definicję typu dokumentu (DTD), XmlException jest zgłaszany.

Oto jak czytnik obsługuje określone naruszenia zgodności w zależności od ustawienia ConformanceLevel właściwości:

Warunek Document Fragment Auto
Tekst lub typowana wartość jest wyświetlana na najwyższym poziomie. XmlException jest zgłaszany. To ustawienie nie jest uznawane za naruszenie. To ustawienie nie jest uznawane za naruszenie.
Na najwyższym poziomie jest wyświetlanych wiele elementów lub żaden element. XmlException jest zgłaszany. To ustawienie nie jest uznawane za naruszenie. To ustawienie nie jest uznawane za naruszenie.
Element najwyższego poziomu to biały znak. To ustawienie nie jest uznawane za naruszenie. To ustawienie nie jest uznawane za naruszenie. To ustawienie nie jest uznawane za naruszenie.
Element najwyższego poziomu jest atrybutem (rozpoznawanym jako węzeł tekstowy). XmlException jest zgłaszany. To ustawienie nie jest uznawane za naruszenie. To ustawienie nie jest uznawane za naruszenie.
Znaleziono wiele ciągłych węzłów tekstowych. To ustawienie nie jest uznawane za naruszenie. To ustawienie nie jest uznawane za naruszenie. To ustawienie nie jest uznawane za naruszenie.
Ten sam prefiks przestrzeni nazw jest zadeklarowany dwukrotnie w tym samym zakresie lokalnym. XmlException jest zgłaszany. XmlException jest zgłaszany. XmlException jest zgłaszany.
Przestrzeń nazw w elemecie lub atrybucie nie istnieje w zakresie lokalnym. XmlException jest zgłaszany. XmlException jest zgłaszany. XmlException jest zgłaszany.
Dane zawierają niezgodność przestrzeni nazw prefiks-name. XmlException jest zgłaszany. XmlException jest zgłaszany. XmlException jest zgłaszany.
xml:space atrybut zawiera nieprawidłową wartość. XmlException jest zgłaszany. XmlException jest zgłaszany. XmlException jest zgłaszany.
Napotkano nieprawidłową nazwę. XmlException jest zgłaszany. XmlException jest zgłaszany. XmlException jest zgłaszany.
Prefiks xml nie jest dopasowywany do identyfikatora http://www.w3.org/XML/1998/namespace URI. XmlException jest zgłaszany. XmlException jest zgłaszany. XmlException jest zgłaszany.

Dotyczy

Zobacz też