XmlReaderSettings.ConformanceLevel Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia poziom zgodności, z którym 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
Jedna z wartości wyliczenia określająca poziom zgodności 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 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 rozszerzone.
Atrybuty domyślne zadeklarowane w definicji typu dokumentu są zawsze dodawane nawet wtedy, gdy czytelnik nie sprawdza poprawności.
Deklaracja prefiksu XML przypisanego do prawidłowego identyfikatora URI przestrzeni nazw XML jest dozwolona.
Nazwy notacji w pojedynczej
NotationTypedeklaracji atrybutu iNmTokensw jednejEnumerationdeklaracji atrybutu są odrębne.
Za pomocą ConformanceLevel właściwości można sprawdzić i zagwarantować, że odczytywany strumień jest zgodny z regułami dla dobrze sformułowanego dokumentu XML 1.0 lub fragmentu dokumentu. Jeśli dane nie są zgodne, XmlException zostanie zgłoszony wyjątek. Wartość domyślna to ConformanceLevel.Document (zgodność na poziomie dokumentu).
Trzy poziomy zgodności to:
| Setting | Opis |
|---|---|
| Document | Gwarantuje, że dane XML są zgodne z regułami dobrze sformułowanego dokumentu XML 1.0. Ten poziom sprawdzania gwarantuje, że każdy procesor może korzystać z odczytywanego strumienia 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 | Gwarantuje, że dane XML są zgodne 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 dokumentów 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 wartości: — Węzeł odwołania do tekstu, CDATA lub 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 zawijania, 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 jest pozostawione w opakowaniu XmlReader . |
Uwaga / Notatka
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 zostaje zgłoszony.
Oto jak czytelnik 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. | Nie uważa się za naruszenie tego ustawienia. | Nie uważa się za naruszenie tego ustawienia. |
| Na najwyższym poziomie jest wyświetlanych wiele elementów lub żaden element. | XmlException jest zgłaszany. | Nie uważa się za naruszenie tego ustawienia. | Nie uważa się za naruszenie tego ustawienia. |
| Element najwyższego poziomu to biały znak. | Nie uważa się za naruszenie tego ustawienia. | Nie uważa się za naruszenie tego ustawienia. | Nie uważa się za naruszenie tego ustawienia. |
| Element najwyższego poziomu jest atrybutem (rozpoznawanym jako węzeł tekstowy). | XmlException jest zgłaszany. | Nie uważa się za naruszenie tego ustawienia. | Nie uważa się za naruszenie tego ustawienia. |
| Znaleziono wiele ciągłych węzłów tekstowych. | Nie uważa się za naruszenie tego ustawienia. | Nie uważa się za naruszenie tego ustawienia. | Nie uważa się za naruszenie tego ustawienia. |
| Ten sam prefiks przestrzeni nazw jest zadeklarowany dwa razy 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 zgodny z identyfikatorem http://www.w3.org/XML/1998/namespace URI. |
XmlException jest zgłaszany. | XmlException jest zgłaszany. | XmlException jest zgłaszany. |