Condividi tramite


Controllo della conformità dei dati con XmlReader

Per impostazione predefinita, gli oggetti XmlReader creati dal metodo Create sono più conformi rispetto all'implementazione di XmlTextReader. Gli oggetti XmlReader creati dal metodo Create supportano per impostazione predefinita le seguenti funzionalità:

  • Normalizzazione di caratteri di nuova riga.

  • Espansione delle entità.

  • Aggiunta di attributi predefiniti.

Le proprietà XmlReaderSettings.CheckCharacters e XmlReaderSettings.ConformanceLevel consentono di specificare il tipo di controlli di conformità da abilitare per l'oggetto XmlReader creato.

Impostazione di CheckCharacters

La proprietà CheckCharacters nella classe XmlReaderSettings imposta il lettore dati in modo da controllare i caratteri e generare un tipo XmlException se uno o più caratteri sono al di fuori dell'intervallo dei caratteri XML validi. Quando è abilitato il controllo dei caratteri, è garantito quanto segue:

  • Tutti i caratteri nel documento sono compresi nell'intervallo di caratteri XML validi definito nel documento W3C XML 1.0 Recommendation.

  • Tutti i nomi XML sono validi. Se, ad esempio, il nome di un elemento inizia con un numero, viene generato un tipo XmlException. Per ulteriori informazioni, vedere all'indirizzo http://www.w3.org/TR/REC-xml#NT-Name (informazioni in lingua inglese).

Per impostazione predefinita, il controllo dei caratteri è abilitato. Se il lettore elabora dati di testo, viene sempre eseguito il controllo della validità dei nomi XML, anche quando la proprietà CheckCharacters è impostata su false.

Impostazione di ConformanceLevel

La proprietà ConformanceLevel nella classe XmlReaderSettings consente di configurare XmlReader per controllare e garantire che il flusso di dati letti sia conforme a uno specifico set di regole. In base al livello di conformità specificato, è possibile controllare i dati XML per verificare che siano conformi alle regole per un documento o un frammento di documento XML 1.0 in formato corretto. Se i dati non sono conformi, verrà generato un tipo XmlException. L'impostazione predefinita è ConformanceLevel.Document.

NotaNota

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

Valore di ConformanceLevel

Descrizione

Document

I dati XML sono conformi alle regole per un documento XML 1.0 corretto. Questo livello di controllo assicura che qualunque processore possa utilizzare il flusso di dati letto come un documento XML 1.0.

Il lettore verifica quanto segue:

  • L'elemento di livello superiore non deve presentare altri nodi oltre alla dichiarazione XML, la definizione del tipo di documento (DTD), l'elemento, il commento, spazi vuoti o istruzioni di elaborazione.

  • I dati XML devono presentare esattamente un nodo di elemento di livello superiore.

Fragment

I dati XML sono conformi alle regole per un frammento di documento XML 1.0 corretto.

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 assicura che qualunque processore possa utilizzare il flusso di dati letto come un'entità analizzata esterna XML 1.0.

NotaNota
La DTD non è consentita nei frammenti.

Auto

Il lettore decide il livello di controllo della conformità da applicare in base ai dati in arrivo.

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 al testo, a CDATA o all'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 il livello ConformanceLevel.Auto non aggiunge nuovi controlli di conformità. Il controllo di conformità è affidato al XmlReader che viene incluso.

Oggetti XmlTextReader, XmlValidatingReader e XmlNodeReader

L'impostazione di ConformanceLevel presenta il seguente comportamento in associazione con oggetti XmlTextReader, XmlValidatingReader o XmlNodeReader.

Esempio

Il codice seguente crea un lettore che impone la conformità a livello di frammento.

Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader as XmlReader = XmlReader.Create(new StringReader(xmlString), settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlString), settings);

Vedere anche

Concetti

Lettura di XML con XmlReader

Altre risorse

Convalida di dati XML con XmlReader