XmlReaderSettings.ConformanceLevel Propiedad

Definición

Obtiene o establece el nivel de conformidad que cumplirá XmlReader.

public:
 property System::Xml::ConformanceLevel ConformanceLevel { System::Xml::ConformanceLevel get(); void set(System::Xml::ConformanceLevel value); };
public System.Xml.ConformanceLevel ConformanceLevel { get; set; }
member this.ConformanceLevel : System.Xml.ConformanceLevel with get, set
Public Property ConformanceLevel As ConformanceLevel

Valor de propiedad

ConformanceLevel

Uno de los valores de enumeración que especifica el nivel de conformidad que el lector XML aplicará. De manera predeterminada, es Document.

Ejemplos

En el ejemplo siguiente se crea un XmlReader objeto que lee un fragmento XML.

string xmlFrag ="<item rk:ID='abc-23'>hammer</item> " +
                        "<item rk:ID='r2-435'>paint</item>" +
                        "<item rk:ID='abc-39'>saw</item>";

// Create the XmlNamespaceManager.
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("rk", "urn:store-items");

// Create the XmlParserContext.
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);

// Create the reader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlFrag), settings, context);
Dim xmlFrag As String = "<item rk:ID='abc-23'>hammer</item> " & _
                                     "<item rk:ID='r2-435'>paint</item>" & _
                                     "<item rk:ID='abc-39'>saw</item>"

' Create the XmlNamespaceManager.
Dim nt As New NameTable()
Dim nsmgr As New XmlNamespaceManager(nt)
nsmgr.AddNamespace("rk", "urn:store-items")

' Create the XmlParserContext.
Dim context As New XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)

' Create the reader. 
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader As XmlReader = XmlReader.Create(New StringReader(xmlFrag), settings, context)

Comentarios

Los lectores XML creados por el Create método cumplen los siguientes requisitos de cumplimiento de forma predeterminada:

  • Las nuevas líneas y el valor de atributo se normalizan según la recomendación W3C XML 1.0.

  • Todas las entidades se expanden automáticamente.

  • Los atributos predeterminados declarados en la definición de tipo de documento siempre se agregan incluso cuando el lector no se valida.

  • Se permite la declaración del prefijo XML asignado al URI de espacio de nombres XML correcto.

  • Los nombres de notación de una sola NotationType declaración de atributo y NmTokens en una declaración de atributo único Enumeration son distintos.

Puede usar la ConformanceLevel propiedad para comprobar y garantizar que la secuencia que se lee cumple con las reglas de un documento o fragmento de documento XML 1.0 bien formado. Si los datos no cumplen, se produce una XmlException excepción. El valor predeterminado es ConformanceLevel.Document (conformidad de nivel de documento).

Los tres niveles de conformidad son:

Configuración Descripción
Document Garantiza que los datos XML se ajustan a las reglas de un documento XML 1.0 con formato correcto. Este nivel de comprobación garantiza que cualquier procesador pueda consumir la secuencia que se lee como un documento XML 1.0 bien formado.

El sistema de lectura comprueba lo siguiente:

- El elemento de nivel superior no debe tener nodos que no sean declaración XML, definición de tipo de documento (DTD), elemento, comentario, espacio en blanco o instrucción de procesamiento.
- Los datos XML deben tener exactamente un nodo de elemento de nivel superior.
Fragment Garantiza que los datos XML se ajustan a las reglas de un fragmento de documento XML 1.0 con formato 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 lee como una entidad analizada externa.
Auto Especifica que el lector debe determinar el nivel de comprobación de conformidad en función de 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:

- Nodo de referencia de texto, CDATA o entidad en el nivel raíz.
- Más de un elemento en el nivel raíz.
- No hay 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.Document no agrega ninguna nueva comprobación de conformidad. La comprobación del cumplimiento se deja al XmlReader que se está conteniendo.

Nota

La recomendación de XML 1.0 requiere que haya cumplimiento a nivel del documento cuando hay una DTD. Por lo tanto, si el lector está configurado para admitir ConformanceLevel.Fragment, pero los datos XML contienen una definición de tipo de documento (DTD), se produce una XmlException excepción .

Este es el modo en que el lector controla infracciones de conformidad específicas en función del valor de la ConformanceLevel propiedad:

Condición Document Fragment Auto
El texto o un valor con tipo aparece en el nivel superior. XmlException se produce. No se considera una infracción para esta configuración. No se considera una infracción para esta configuración.
Varios elementos o ningún elemento aparecen en el nivel superior. XmlException se produce. No se considera una infracción para esta configuración. No se considera una infracción para esta configuración.
El elemento de nivel superior es espacio en blanco. No se considera una infracción para esta configuración. No se considera una infracción para esta configuración. No se considera una infracción para esta configuración.
El elemento de nivel superior es un atributo (reconocido como nodo de texto). XmlException se produce. No se considera una infracción para esta configuración. No se considera una infracción para esta configuración.
Se encuentran varios nodos de texto contiguos. No se considera una infracción para esta configuración. No se considera una infracción para esta configuración. No se considera una infracción para esta configuración.
El mismo prefijo de espacio de nombres se declara dos veces en el mismo ámbito local. XmlException se produce. XmlException se produce. XmlException se produce.
El espacio de nombres de un elemento o atributo no existe en el ámbito local. XmlException se produce. XmlException se produce. XmlException se produce.
Los datos contienen un error de coincidencia de espacio de nombres de prefijo. XmlException se produce. XmlException se produce. XmlException se produce.
xml:space el atributo contiene un valor no válido. XmlException se produce. XmlException se produce. XmlException se produce.
Se ha encontrado un nombre no válido. XmlException se produce. XmlException se produce. XmlException se produce.
El xml prefijo no coincide con el http://www.w3.org/XML/1998/namespace URI. XmlException se produce. XmlException se produce. XmlException se produce.

Se aplica a

Consulte también