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 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 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 yNmTokens
en una declaración de atributo únicoEnumeration
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. |