Compartir por


XmlReaderSettings.ConformanceLevel Propiedad

Definición

Obtiene o establece el nivel de conformidad con el 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

Uno de los valores de enumeración que especifica el nivel de conformidad que aplicará el lector XML. El valor predeterminado 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 bien formado. 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 lector comprueba lo siguiente:

- El elemento de nivel superior no debe tener ningún nodo distinto de 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 bien formado.

Esta configuración 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 de conformidad del documento se aplica si los datos XML contienen información de DTD.

La comprobación de conformidad de fragmentos se aplica si los datos XML contienen una de las siguientes opciones:

- 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.

XmlException Se produce una excepción si hay un conflicto, como cuando hay un nodo de texto y un DTD en el nivel raíz.

Esta configuración se puede usar en escenarios de ajuste cuando el Create método se usa para agregar características adicionales a un existente XmlReader. En este caso, ConformanceLevel.Document no agrega ninguna comprobación de conformidad nueva. La comprobación de conformidad se deja en el XmlReader contenedor que se está ajustando.

Nota:

La recomendación XML 1.0 requiere conformidad de nivel de documento cuando hay una DTD presente. 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 lanza un XmlException.

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 espacios 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 encuentra 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