Compartir a través de


Leer datos XML con XmlTextReader

La clase XmlTextReader es una implementación de XmlReader y proporciona un analizador rápido y eficaz. Aplica las reglas para que XML tenga un formato adecuado. No se trata de un analizador de validación ni de no validación, dado que carece de información de un esquema o de una DTD. Puede leer texto en bloques o caracteres de una secuencia.

La clase XmlTextReader proporciona la funcionalidad siguiente:

  • Aplica las reglas para que XML tenga un formato correcto.
  • Comprueba que el formato de la DTD sea correcto. No obstante, no usa la DTD en la validación, para expandir referencias a entidades ni agregar atributos predeterminados.
  • La validación no se realiza con respecto a DTD o esquemas.
  • Comprueba que el formato de los nodos DOCTYPE sea correcto.
  • Comprueba si el formato de las entidades es el correcto. Para los tipos de nodo EntityReference, se devuelve un único nodo EntityReference vacío. Un nodo EntityReference vacío es en el que su propiedad Value es igual a string.Empty. Esto es debido a que no existe DTD o esquema con que expandir la referencia de entidad. La clase XmlTextReader garantiza que toda la DTD tenga un formato correcto, lo que incluye a los nodos EntityReference.
  • Proporciona un analizador de XML eficaz, ya que la clase XmlTextReader no origina la sobrecarga de trabajo que implica la comprobación de la validación.

La clase XmlTextReader puede leer datos de diferentes procedencias, como un objeto de secuencia, un objeto TextReader y una dirección URL que identifica la ubicación de un archivo local o de un sitio Web.

XmlTextReader usa XmlResolver para localizar recursos externos, tales como las DTD, de forma que pueda comprobarlos para ver si su formato es correcto. Para obtener más información sobre XmlResolver, vea Resolver recursos mediante XmlResolver.

La declaración de codificación, <?xml version="1.0" encoding="ISO-8859-5"?>, contiene un atributo de codificación que establece la codificación para el documento. La clase XmlTextReader incluye una propiedad Encoding que devuelve la codificación de caracteres encontrada en el atributo de codificación de la declaración XML. Si no se encuentra ningún atributo de codificación, de forma predeterminada se establece para el documento como UTF-8.

Si se lee un recurso externo, como una DTD empleada para expandir una referencia a una entidad o un archivo de esquema, el valor de la codificación se iguala al encontrado en la referencia externa. Si no se encuentra codificación en la referencia externa, el valor predeterminado se establece en UTF-8. XmlTextReader admite muchas codificaciones, ya que usa la clase System.Text.Encoding. Por lo tanto, todas las codificaciones admitidas por esa clase también lo son por la clase XmlTextReader. Las únicas codificaciones no admitidas son las que asignan la secuencia <?xml a valores de byte diferentes a UTF-8, como UTF-7 y EBCDIC.

Vea también

Lecturas de todo el contenido mediante secuencias de caracteres | Información de la declaración de tipo del documento | Controlar los espacios en blanco con XmlTextReader | Normalización del valor de atributo | Controlar excepciones mediante XmlException en XmlTextReader | XmlReader (Clase) | XmlReader (Miembros) | XmlNodeReader (Clase) | XmlNodeReader (Miembros) | XmlTextReader (Clase) | XmlTextReader (Miembros) | XmlValidatingReader (Clase) | XmlValidatingReader