Condividi tramite


XmlReaderSettings.ConformanceLevel Proprietà

Definizione

Ottiene o imposta il livello di conformità dell'oggetto XmlReader.

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à

ConformanceLevel

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 Create metodo 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.

  • La dichiarazione di prefisso XML mappata all'URI dello spazio dei nomi XML corretto è consentita.

  • I nomi di notazione in una singola dichiarazione di attributo e NmTokens in una singola NotationType Enumeration dichiarazione di attributo sono distinti.

È possibile usare la ConformanceLevel proprietà per verificare e garantire che il flusso in lettura 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 Assicura 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 Assicura che i dati XML siano conformi alle regole per un frammento di documento XML 1.0 ben formato.

Con questa impostazione vengono accettati i dati XML con più elementi radice o i nodi di tipo text al livello principale. 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 di conformità del documento viene applicato se i dati XML contengono informazioni DTD.

Il controllo di conformità del frammento viene applicato se i dati XML contengono uno degli elementi seguenti:

- Nodo di riferimento di testo, CDATA o entità a livello radice.
- Più di un elemento a livello radice.
- Nessun elemento a livello radice.

Viene generato un tipo XmlException se si verifica un conflitto, ad esempio quando sono presenti un nodo di tipo text e una DTD a livello radice.

È possibile utilizzare questa impostazione in scenari di inclusione quando viene utilizzato il metodo Create per aggiungere ulteriori funzionalità a un XmlReader esistente. In questo caso, ConformanceLevel.Document non aggiunge alcuna nuova verifica della conformità. Il controllo di conformità è affidato al XmlReader che viene incluso.

Nota

La raccomandazione XML 1.0 richiede la conformità a livello di documento in presenza di una DTD. Pertanto, se il lettore è configurato per supportare ConformanceLevel.Fragment, ma i dati XML contengono una definizione del tipo di documento (DTD), viene generata un'eccezione XmlException .

Ecco come il lettore gestisce violazioni di conformità specifiche a seconda dell'impostazione della ConformanceLevel proprietà:

Condizione 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 è costituito da spazi vuoti. 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 rilevati più nodi contigui di tipo text. 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.

Si applica a

Vedi anche