Condividi tramite


Lettura di dati tipizzati

La classe XmlReader consente ai chiamanti di leggere i dati XML e restituisce i valori come valori CLR (Common Language Runtime) di tipi semplici anziché come stringhe. I metodi forniti consentono di recuperare i valori utilizzando i tipi del sistema invece delle stringhe. Questi nuovi metodi consentono di recuperare nella rappresentazione i valori più appropriati per il processo di codifica senza dover eseguire manualmente le conversioni e l'analisi dei valori.

Se ai dati XML non sono associate informazioni sul tipo di dati o di schema, la classe XmlReader tenterà di convertire il valore dei nodi nel tipo CLR specificato. Ad esempio, se si chiama il metodo ReadContentAsBoolean, il lettore tenterà di convertire il testo in un oggetto Boolean.

Nella classe XmlReader vengono utilizzate le regole definite nel documento W3C XML Schema Part 2: Datatypes recommendation (informazioni in lingua inglese).

Contenuto tipizzato

I metodi ReadContentAsBoolean, ReadContentAsDateTime, ReadContentAsDouble, ReadContentAsLong, ReadContentAsInt e ReadContentAsString vengono utilizzati per restituire un oggetto CLR specifico. Questi metodi consentono di leggere il contenuto di testo nella posizione corrente del lettore e di convertirlo nel tipo restituito richiesto. Il testo, gli spazi vuoti, gli spazi vuoti significativi e le sezioni CDATA sono concatenati. I commenti e le istruzioni di elaborazione vengono ignorati e i riferimenti alle entità vengono risolti automaticamente.

Il metodo ReadContentAs consente di leggere il contenuto di testo e di restituire un oggetto del tipo specificato.

Il metodo ReadContentAsObject consente di restituire il tipo CLR boxed più appropriato, specificato dalla proprietà ValueType. Se il contenuto non è tipizzato, il lettore restituirà il contenuto come stringa.

Dopo la chiamata a uno dei metodi ReadContentAs, il lettore verrà posizionato nel nodo Element o EndElement successivo.

Nella tabella seguente viene descritto come viene considerato ogni tipo di nodo dal metodo ReadContentAs.

XmlNodeType

Valore restituito

Comportamento del lettore

Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity

Contenuto concatenato di nodi di tipo text, CDATA, spazi vuoti e spazi vuoti significativi convertiti nel tipo richiesto.

Si sposta al successivo tag di fine o di inizio dell'elemento. I riferimenti a entità vengono espansi automaticamente.

Attribute

Uguale a XmlConvert.ToXxx sul valore dell'attributo.

Il lettore resta nella posizione corrente.

Comment

ProcessingInstruction

Ignora l'istruzione di elaborazione (PI, Processing Instruction) o il commento e legge il contenuto del testo concatenato successivo all'istruzione di elaborazione o al commento.

Si sposta al successivo tag di fine o di inizio dell'elemento. I riferimenti a entità vengono espansi automaticamente.

EndElement

Una stringa vuota.

Il lettore resta nella posizione corrente.

Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment

Viene generato un oggetto InvalidOperationException.

Non definito, sebbene in genere il lettore resti nella posizione corrente.

Contenuto di elementi tipizzati

La classe XmlReader dispone di metodi progettati appositamente per leggere il contenuto di elementi tipizzati. Questi metodi possono essere chiamati solo nei nodi di tipo Element e non possono essere utilizzati su elementi contenenti elementi figlio o contenuto misto. Quando viene chiamato, l'oggetto XmlReader legge il tag di inizio e il contenuto dell'elemento, quindi si sposta dopo il tag di fine dell'elemento. Le istruzioni di elaborazione e i commenti vengono ignorati e le entità vengono espanse.

I metodi ReadElementContentAsBoolean, ReadElementContentAsDateTime, ReadElementContentAsDouble, ReadElementContentAsLong, ReadElementContentAsInt e ReadElementContentAsString consentono di leggere il contenuto dell'elemento e di restituire un oggetto CLR specifico.

Il metodo ReadElementContentAs consente di leggere il contenuto dell'elemento e di restituire un oggetto del tipo specificato.

Il metodo ReadElementContentAsObject consente di restituire il tipo CLR boxed più appropriato, specificato dalla proprietà ValueType. Nell'argomento Mapping dei tipi di dati XML a tipi di dati CLR viene descritto come la classe XmlReader determina il tipo CLR più appropriato. Se il contenuto non è tipizzato, il lettore restituirà il contenuto come stringa.

Vedere anche

Concetti

Lettura di XML con XmlReader

Procedura: leggere i dati tipizzati tramite un mapping dello schema

Procedura: leggere i dati tipizzati senza un mapping dello schema

Mapping dei tipi di dati XML a tipi di dati CLR