XmlReaderSettings.ConformanceLevel Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger den nivå av överensstämmelse som XmlReader ska uppfyllas.
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
Egenskapsvärde
Ett av uppräkningsvärdena som anger den nivå av överensstämmelse som XML-läsaren ska tillämpa. Standardvärdet är Document.
Exempel
I följande exempel skapas ett XmlReader objekt som läser ett 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)
Kommentarer
XML-läsare som skapas av Create metoden uppfyller följande efterlevnadskrav som standard:
Nya rader och attributvärde normaliseras enligt W3C XML 1.0-rekommendationen.
Alla entiteter expanderas automatiskt.
Standardattribut som deklareras i dokumenttypsdefinitionen läggs alltid till även när läsaren inte verifierar.
Deklaration av XML-prefix som mappats till rätt XML-namnområdes-URI tillåts.
Notationsnamnen i en enda
NotationTypeattributdeklaration ochNmTokensi en endaEnumerationattributdeklaration är distinkta.
Du kan använda ConformanceLevel egenskapen för att kontrollera och garantera att dataströmmen som läss följer reglerna för ett välformat XML 1.0-dokument eller dokumentfragment. Om data inte uppfyller kraven utlöses ett XmlException undantag. Standardvärdet är ConformanceLevel.Document (överensstämmelse på dokumentnivå).
De tre överensstämmelsenivåerna är:
| Inställningen | Description |
|---|---|
| Document | Säkerställer att XML-data följer reglerna för ett välformat XML 1.0-dokument. Den här kontrollnivån säkerställer att alla processorer kan använda dataströmmen som läse som ett välformat XML 1.0-dokument. Läsaren söker efter följande: – Objektet på den översta nivån får inte ha några andra noder än XML-deklaration, definition av dokumenttyp (DTD), element, kommentar, tomt utrymme eller bearbetningsinstruktioner. – XML-data måste ha exakt en elementnod på den översta nivån. |
| Fragment | Säkerställer att XML-data följer reglerna för ett välformat XML 1.0-dokumentfragment. Den här inställningen accepterar XML-data med flera rotelement eller textnoder på den översta nivån. Den här kontrollnivån säkerställer att alla processorer kan använda dataströmmen som läse som en extern parsad entitet. |
| Auto | Anger att läsaren ska bestämma nivån för överensstämmelsekontroll baserat på inkommande data. Kontroll av dokumentefterlevnad tillämpas om XML-data innehåller DTD-information. Kontroll av fragmentefterlevnad tillämpas om XML-data innehåller något av följande: – Text, CDATA eller entitetsreferensnod på rotnivå. – Mer än ett element på rotnivå. – Inget element på rotnivå. En XmlException utlöses om det finns en konflikt, till exempel när det finns en textnod och en DTD på rotnivå. Den här inställningen kan användas i omslutningsscenarier när Create metoden används för att lägga till ytterligare funktioner i en befintlig XmlReader. I det här fallet ConformanceLevel.Document lägger du inte till någon ny överensstämmelsekontroll. Överensstämmelsekontroll lämnas till den XmlReader som omsluts. |
Note
XML 1.0-rekommendationen kräver överensstämmelse på dokumentnivå när en DTD finns. Om läsaren därför är konfigurerad för att stödja ConformanceLevel.Fragment, men XML-data innehåller en definition av dokumenttyp (DTD), genereras en XmlException .
Så här hanterar läsaren specifika efterlevnadsöverträdelser beroende på egenskapens ConformanceLevel inställning:
| Tillstånd | Document | Fragment | Auto |
|---|---|---|---|
| Text eller ett skrivet värde visas på den översta nivån. | XmlException kastas. | Anses inte vara en överträdelse för den här inställningen. | Anses inte vara en överträdelse för den här inställningen. |
| Flera element eller inget element visas på den översta nivån. | XmlException kastas. | Anses inte vara en överträdelse för den här inställningen. | Anses inte vara en överträdelse för den här inställningen. |
| Objektet på den översta nivån är tomt utrymme. | Anses inte vara en överträdelse för den här inställningen. | Anses inte vara en överträdelse för den här inställningen. | Anses inte vara en överträdelse för den här inställningen. |
| Objektet på den översta nivån är ett attribut (identifieras som en textnod). | XmlException kastas. | Anses inte vara en överträdelse för den här inställningen. | Anses inte vara en överträdelse för den här inställningen. |
| Flera sammanhängande textnoder hittas. | Anses inte vara en överträdelse för den här inställningen. | Anses inte vara en överträdelse för den här inställningen. | Anses inte vara en överträdelse för den här inställningen. |
| Samma namnområdesprefix deklareras två gånger i samma lokala omfång. | XmlException kastas. | XmlException kastas. | XmlException kastas. |
| Namnområdet i ett element eller attribut finns inte i det lokala omfånget. | XmlException kastas. | XmlException kastas. | XmlException kastas. |
| Data innehåller ett felmatchat prefixnamnområde. | XmlException kastas. | XmlException kastas. | XmlException kastas. |
xml:space attributet innehåller ett ogiltigt värde. |
XmlException kastas. | XmlException kastas. | XmlException kastas. |
| Ett ogiltigt namn påträffas. | XmlException kastas. | XmlException kastas. | XmlException kastas. |
Prefixet xml matchas inte med URI: http://www.w3.org/XML/1998/namespace n. |
XmlException kastas. | XmlException kastas. | XmlException kastas. |