Compartir a través de


Lectura de datos de tipo

Actualización: November 2007

La clase XmlReader permite a quienes realizan llamadas leer datos XML y devolver valores como valores de Common Language Runtime (CLR) de tipo simple en lugar de como cadenas. Con los métodos proporcionados, los usuarios pueden obtener los valores utilizando tipos del sistema en lugar de cadenas. Estos nuevos métodos permiten a los usuarios obtener valores en la representación que sea más apropiada para el trabajo de codificación sin tener que realizar manualmente conversiones de valores y análisis.

Si los datos XML no tienen ninguna información de tipo de datos o esquemas asociada a ellos, la clase XmlReader intenta convertir el valor del nodo en el tipo CLR especificado. Por ejemplo, si llama al método ReadContentAsBoolean, el sistema de lectura intenta convertir el texto en un objeto Boolean.

La clase XmlReader utiliza las reglas definidas por el esquema W3C XML Parte 2: recomendación sobre tipos de datos.

Contenido con tipo

Los métodos ReadContentAsBoolean, ReadContentAsDateTime, ReadContentAsDouble, ReadContentAsLong, ReadContentAsInt y ReadContentAsString se utilizan para devolver un objeto CLR específico. Estos métodos leen el contenido de texto en la posición actual del sistema de lectura y lo convierten en el tipo de valor devuelto solicitado. El texto, el espacio en blanco, el espacio en blanco significativo y las secciones CDATA se concatenan. Los comentarios y las instrucciones de procesamiento se omiten y las referencias de entidad se resuelven automáticamente.

El método ReadContentAs se utiliza para leer el contenido de texto y devolver un objeto del tipo especificado.

El método ReadContentAsObject devuelve un CLR al que se ha aplicado la conversión "boxing" del tipo más apropiado, especificado por la propiedad ValueType. Si el contenido no tiene tipo, el sistema de lectura lo devuelve como una cadena.

Después de llamar a cualquiera de los métodos ReadContentAs, el sistema de lectura se sitúa en el siguiente nodo Element o EndElement.

En la siguiente tabla se describe cómo tratan los métodos ReadContentAs a cada tipo de nodo.

Tipo XmlNode

Valor del tipo devuelto

Comportamiento del sistema de lectura

Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity

El contenido concatenado de los nodos de texto, CDATA, espacio en blanco y espacio en blanco significativo se convierten en el tipo solicitado.

Se mueve a la siguiente etiqueta del elemento de inicio o de fin. Las referencias de entidad se expanden automáticamente.

Attribute

Igual que XmlConvert.ToXXX en el valor del atributo.

El sistema de lectura permanece en la posición actual.

Comment

ProcessingInstruction

Omite la instrucción de procesamiento o los comentarios y lee el contenido del texto concatenado que sigue a la instrucción de procesamiento o los comentarios.

Se mueve a la siguiente etiqueta del elemento de inicio o de fin. Las referencias de entidad se expanden automáticamente.

EndElement

Una cadena vacía.

El sistema de lectura permanece en la posición actual.

Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment

Se inicia una InvalidOperationException.

No definido, aunque normalmente el sistema de lectura permanece en la posición actual.

Contenido de elementos de tipo

La clase XmlReader tiene métodos que están específicamente diseñados para leer contenido de elementos con tipo. Estos métodos sólo se pueden llamar en tipos de nodos de elementos. Estos métodos no se pueden utilizar en elementos que contienen elementos segundarios o incluyen contenido mixto. Al llamar al objeto XmlReader, éste lee la etiqueta de inicio y el contenido del elemento y, a continuación, se mueve después de la etiqueta del elemento de fin. Las instrucciones de procesamiento y los comentarios se omiten y las entidades se expanden.

Los métodos ReadElementContentAsBoolean, ReadElementContentAsDateTime, ReadElementContentAsDouble, ReadElementContentAsLong, ReadElementContentAsInt y ReadElementContentAsString leen el elemento de contenido y devuelven un objeto CLR específico.

El método ReadElementContentAs se utiliza para leer el contenido del elemento y devolver un objeto del tipo especificado.

El método ReadElementContentAsObject devuelve un CLR al que se ha aplicado la conversión "boxing" del tipo más apropiado, especificado por la propiedad ValueType. En el tema Asignación de tipos de datos XML a tipos CLR se describe cómo la clase XmlReader determina el tipo CLR más apropiado. Si el contenido no tiene tipo, el sistema de lectura lo devuelve como una cadena.

Vea también

Conceptos

Leer fragmentos de XML con XmlReader

Cómo: Leer datos con establecimiento de tipos con una asignación de esquema

Cómo: Leer datos con establecimiento de tipos sin ninguna asignación de esquema

Asignación de tipos de datos XML a tipos CLR