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
Procedura: leggere i dati tipizzati tramite un mapping dello schema
Procedura: leggere i dati tipizzati senza un mapping dello schema