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