XmlReaderSettings.ConformanceLevel Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
NotationTypedeclaración de atributo yNmTokensen una declaración de atributo únicoEnumerationson 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. |