XmlReaderSettings.ConformanceLevel Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví úroveň shody, se kterou XmlReader bude dodržovat.
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
Hodnota vlastnosti
Jedna z hodnot výčtu, která určuje úroveň shody, kterou bude čtečka XML vynucovat. Výchozí hodnota je Document.
Příklady
Následující příklad vytvoří XmlReader objekt, který čte 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)
Poznámky
Čtečky XML vytvořené metodou Create splňují následující požadavky na dodržování předpisů ve výchozím nastavení:
Nové řádky a hodnota atributu jsou normalizovány podle doporučení W3C XML 1.0.
Všechny entity se automaticky rozbalí.
Výchozí atributy deklarované v definici typu dokumentu se vždy přidají i v případě, že čtenář neověří.
Deklarace předpony XML namapované na správný identifikátor URI oboru názvů XML je povolena.
Názvy notací v deklaraci jednoho
NotationTypeatributu aNmTokensv deklaraci jednohoEnumerationatributu jsou odlišné.
Pomocí vlastnosti můžete ConformanceLevel zkontrolovat a zaručit, že datový proud, který se čte, splňuje pravidla pro dokument nebo fragment dokumentu VE správném formátu XML 1.0. Pokud data nevyhovují, vyvolá XmlException se výjimka. Výchozí hodnota je ConformanceLevel.Document (shoda na úrovni dokumentu).
Tři úrovně shody jsou:
| Setting | Description |
|---|---|
| Document | Zajišťuje, aby data XML odpovídala pravidlům pro dokument XML 1.0 ve správném formátu. Tato úroveň kontroly zajišťuje, že jakýkoli procesor může využívat datový proud, který se čte jako dobře formátovaný dokument XML 1.0. Čtenář zkontroluje následující: - Položka nejvyšší úrovně nesmí obsahovat žádné uzly jiné než deklarace XML, definice typu dokumentu (DTD), element, komentář, prázdné znaky nebo instrukce pro zpracování. - Data XML musí mít přesně jeden uzel elementu nejvyšší úrovně. |
| Fragment | Zajišťuje, že data XML odpovídají pravidlům pro dobře formátovaný fragment dokumentu XML 1.0. Toto nastavení přijímá data XML s více kořenovými elementy nebo textovými uzly na nejvyšší úrovni. Tato úroveň kontroly zajišťuje, že jakýkoli procesor může stream číst jako externí analyzovanou entitu. |
| Auto | Určuje, že čtenář by měl určit úroveň kontroly shody na základě příchozích dat. Kontrola shody dokumentu se použije, pokud data XML obsahují informace DTD. Kontrola shody fragmentů se použije, pokud data XML obsahují jednu z následujících možností: – Textový, CDATA nebo referenční uzel entity na kořenové úrovni. - Více než jeden prvek na kořenové úrovni. – Žádný prvek na kořenové úrovni. Vyvolá XmlException se, pokud dojde ke konfliktu, například když existuje textový uzel a DTD na kořenové úrovni. Toto nastavení lze použít ve scénářích obtékání, když Create se metoda používá k přidání dalších funkcí do existujícího XmlReader. V tomto případě ConformanceLevel.Document nepřidá žádnou novou kontrolu shody. Kontrola shody je ponechána na XmlReader zabalení. |
Poznámka:
Doporučení XML 1.0 vyžaduje shodu na úrovni dokumentu, pokud je k dispozici DTD. Proto pokud je čtečka nakonfigurována tak, aby podporovala ConformanceLevel.Fragment, ale data XML obsahují definici typu dokumentu (DTD), XmlException je vyvolán.
Tady je postup, jak čtenář zpracovává konkrétní porušení shody v závislosti na nastavení ConformanceLevel vlastnosti:
| Podmínka | Document | Fragment | Auto |
|---|---|---|---|
| Text nebo zadaná hodnota se zobrazí na nejvyšší úrovni. | XmlException je vyhozen. | Toto nastavení se nepovažuje za porušení. | Toto nastavení se nepovažuje za porušení. |
| Na nejvyšší úrovni se zobrazí více prvků nebo žádný prvek. | XmlException je vyhozen. | Toto nastavení se nepovažuje za porušení. | Toto nastavení se nepovažuje za porušení. |
| Položka nejvyšší úrovně je prázdné místo. | Toto nastavení se nepovažuje za porušení. | Toto nastavení se nepovažuje za porušení. | Toto nastavení se nepovažuje za porušení. |
| Položka nejvyšší úrovně je atribut (rozpoznán jako textový uzel). | XmlException je vyhozen. | Toto nastavení se nepovažuje za porušení. | Toto nastavení se nepovažuje za porušení. |
| Najde se více souvislých textových uzlů. | Toto nastavení se nepovažuje za porušení. | Toto nastavení se nepovažuje za porušení. | Toto nastavení se nepovažuje za porušení. |
| Stejná předpona oboru názvů je deklarována dvakrát ve stejném místním oboru. | XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
| Obor názvů v elementu nebo atributu v místním oboru neexistuje. | XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
| Data obsahují neshodu oboru názvů předpony. | XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
xml:space atribut obsahuje neplatnou hodnotu. |
XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
| Byl zjištěn neplatný název. | XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
Předpona xml se neshoduje s identifikátorem http://www.w3.org/XML/1998/namespace URI. |
XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |