XmlReaderSettings.ConformanceLevel Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta il livello di conformità con cui l'oggetto XmlReader sarà conforme.
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
Valore della proprietà
Uno dei valori di enumerazione che specifica il livello di conformità che verrà applicato dal lettore XML. Il valore predefinito è Document.
Esempio
Nell'esempio seguente viene creato un XmlReader oggetto che legge un frammento 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)
Commenti
I lettori XML creati dal metodo Create soddisfano i requisiti di conformità seguenti per impostazione predefinita:
Le nuove righe e il valore dell'attributo vengono normalizzati in base alla raccomandazione W3C XML 1.0.
Tutte le entità vengono espanse automaticamente.
Gli attributi predefiniti dichiarati nella definizione del tipo di documento vengono sempre aggiunti anche quando il lettore non convalida.
È consentita la dichiarazione di prefisso XML mappato all'URI dello spazio dei nomi XML corretto.
I nomi di notazione in una singola dichiarazione di attributo
NotationTypeeNmTokensin una singola dichiarazione di attributoEnumerationsono distinti.
È possibile utilizzare la ConformanceLevel proprietà per verificare e garantire che il flusso letto sia conforme alle regole per un documento o un frammento di documento XML 1.0 ben formato. Se i dati non sono conformi, viene generata un'eccezione XmlException . Il valore predefinito è ConformanceLevel.Document (conformità a livello di documento).
I tre livelli di conformità sono:
| Impostazione | Descrizione |
|---|---|
| Document | Garantisce che i dati XML siano conformi alle regole per un documento XML 1.0 ben formato. Questo livello di controllo garantisce che qualsiasi processore possa utilizzare il flusso letto come documento XML 1.0 ben formato. Il lettore verifica quanto segue: - L'elemento di primo livello non deve avere nodi diversi dalla dichiarazione XML, dalla definizione del tipo di documento (DTD), dall'elemento, dal commento, dallo spazio vuoto o dall'istruzione di elaborazione. - I dati XML devono avere esattamente un nodo elemento di primo livello. |
| Fragment | Garantisce che i dati XML siano conformi alle regole per un frammento di documento XML 1.0 ben formato. Questa impostazione accetta dati XML con più elementi radice o nodi di testo al livello superiore. Questo livello di controllo garantisce che qualsiasi processore possa utilizzare il flusso letto come entità analizzata esterna. |
| Auto | Specifica che il lettore deve determinare il livello di controllo della conformità in base ai dati in ingresso. Il controllo della conformità del documento viene applicato se i dati XML contengono informazioni DTD. Il controllo della conformità del frammento viene applicato se i dati XML contengono uno dei seguenti elementi: - Nodo di riferimento di testo, CDATA o entità a livello radice. - Più di un elemento a livello radice. - Nessun elemento a livello radice. Viene XmlException generata un'eccezione se si verifica un conflitto, ad esempio quando è presente un nodo di testo e un DTD a livello radice. Questa impostazione può essere usata negli scenari di wrapping quando il Create metodo viene usato per aggiungere funzionalità aggiuntive a un oggetto esistente XmlReader. In questo caso, ConformanceLevel.Document non aggiunge alcuna nuova verifica della conformità. Il controllo della conformità viene lasciato all'oggetto di cui viene eseguito il XmlReader wrapping. |
Annotazioni
La raccomandazione XML 1.0 richiede la conformità a livello di documento quando è presente un DTD. Pertanto, se il lettore è configurato per supportare ConformanceLevel.Fragment, ma i dati XML contengono una definizione del tipo di documento (DTD), viene generata una XmlException.
Ecco come il lettore gestisce violazioni di conformità specifiche a seconda dell'impostazione della ConformanceLevel proprietà:
| Condition | Document | Fragment | Auto |
|---|---|---|---|
| Il testo o un valore tipizzato viene visualizzato al livello superiore. | XmlException viene generata. | Non considerata una violazione per questa impostazione. | Non considerata una violazione per questa impostazione. |
| Più elementi o nessun elemento vengono visualizzati al livello superiore. | XmlException viene generata. | Non considerata una violazione per questa impostazione. | Non considerata una violazione per questa impostazione. |
| L'elemento di primo livello è uno spazio vuoto. | Non considerata una violazione per questa impostazione. | Non considerata una violazione per questa impostazione. | Non considerata una violazione per questa impostazione. |
| L'elemento di primo livello è un attributo (riconosciuto come nodo di testo). | XmlException viene generata. | Non considerata una violazione per questa impostazione. | Non considerata una violazione per questa impostazione. |
| Vengono trovati più nodi di testo contigui. | Non considerata una violazione per questa impostazione. | Non considerata una violazione per questa impostazione. | Non considerata una violazione per questa impostazione. |
| Lo stesso prefisso dello spazio dei nomi viene dichiarato due volte nello stesso ambito locale. | XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
| Lo spazio dei nomi in un elemento o attributo non esiste nell'ambito locale. | XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
| I dati contengono una mancata corrispondenza dello spazio dei nomi con prefisso. | XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
xml:space l'attributo contiene un valore non valido. |
XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
| Viene rilevato un nome non valido. | XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
Il xml prefisso non corrisponde all'URI http://www.w3.org/XML/1998/namespace . |
XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |