Compartir a través de


Comprobación del cumplimiento en datos con XmlReader

Actualización: November 2007

Los objetos XmlReader que crea el método Create muestran un mayor cumplimiento, de manera predeterminada, que la implementación de XmlTextReader. Los objetos XmlReader que crea el método Create admiten las siguientes características de manera predeterminada:

  • Normalizan los caracteres de nueva línea.

  • Expanden entidades.

  • Agregan atributos predeterminados.

Las propiedades XmlReaderSettings.CheckCharacters y XmlReaderSettings.ConformanceLevel le permiten especificar el tipo de comprobaciones del cumplimiento que desea habilitar en el objeto XmlReader creado.

Valor de CheckCharacters

La propiedad CheckCharacters de la clase XmlReaderSettings pide al sistema de lectura que compruebe los caracteres e inicie una XmlException, si cualquiera de los caracteres se sale del intervalo de caracteres XML legales. Si habilita la comprobación de caracteres, tiene garantizado lo siguiente:

De manera predeterminada, la comprobación de caracteres está habilitada. Si el sistema de lectura procesa datos de texto, siempre comprueba que todos los nombres XML sean válidos, incluso cuando la propiedad CheckCharacters está establecida en false.

Valor de ConformanceLevel

La propiedad ConformanceLevel de la clase XmlReaderSettings configura XmlReader para comprobar y garantizar que la secuencia que se está leyendo cumple un conjunto determinado de reglas. Dependiendo del nivel de cumplimiento que se especifique, se puede comprobar si los datos XML cumplen las reglas de un documento o un fragmento de documento de XML 1.0 correcto Si los datos no cumplen las reglas, se inicia una XmlException. El valor predeterminado es ConformanceLevel.Document.

Nota:

Si el sistema de lectura está configurado para permitir ConformanceLevel.Fragment, pero los datos XML contienen una definición de tipo de documento (DTD), se inicia una XmlException. La recomendación de XML 1.0 requiere que haya cumplimiento a nivel del documento cuando hay una DTD.

Valor de ConformanceLevel

Descripción

Documento

Los datos XML cumplen las reglas de un documento de XML 1.0 correcto. Este nivel de comprobación garantiza que cualquier procesador pueda consumir la secuencia que se está leyendo como un documento XML 1.0.

El sistema de lectura comprueba lo siguiente:

  • El elemento de nivel superior no debe tener ningún nodo, aparte de la declaración XML, la definición de tipo de elemento (DTD), el elemento, el comentario, el espacio en blanco o la instrucción de procesamiento.

  • Los datos XML deben tener exactamente un nodo de elementos de nivel superior.

Fragmento

Los datos XML cumplen las reglas de un fragmento de documento de XML 1.0 correcto.

Este valor acepta datos XML con varios elementos raíz o nodos de texto en el nivel superior. Este nivel de comprobación garantiza que cualquier procesador pueda consumir la secuencia que se está leyendo como una entidad externa analizada de XML 1.0.

Nota:

La DTD no está permitida en fragmentos.

Automático

El sistema de lectura decide qué nivel de comprobación del cumplimiento va a aplicar basándose en los datos entrantes.

La comprobación del cumplimiento en documentos se aplica si los datos XML contienen información DTD.

La comprobación del cumplimiento en fragmentos se aplica si los datos XML contienen algo de lo siguiente:

  • Texto, CDATA o nodo de referencia de entidad en el nivel raíz.

  • Más de un elemento en el nivel raíz.

  • Ningún elemento en el nivel raíz.

Se inicia una XmlException si hay un conflicto como, por ejemplo, si hay un nodo de texto y una DTD en el nivel raíz.

Este valor se puede utilizar en situaciones de contención, en las que se utiliza un método Create para agregar características adicionales a un XmlReader existente. En este caso, ConformanceLevel.Auto no agrega ninguna comprobación del cumplimiento nueva. La comprobación del cumplimiento se deja al XmlReader que se está conteniendo.

Objetos XmlTextReader, XmlValidatingReader y XmlNodeReader

El valor de ConformanceLevel tiene el siguiente comportamiento cuando trabaja con objetos XmlTextReader, XmlValidatingReader o XmlNodeReader.

Ejemplo

El siguiente código crea un sistema de lectura que exige el cumplimiento a nivel de fragmento.

Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader as XmlReader = XmlReader.Create(new StringReader(xmlString), settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlString), settings);

Vea también

Conceptos

Leer fragmentos de XML con XmlReader

Otros recursos

Validación de datos XML con XmlReader