XmlDocument.InnerXml 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 marcado que representa los nodos secundarios del nodo actual.
public:
virtual property System::String ^ InnerXml { System::String ^ get(); void set(System::String ^ value); };
public override string InnerXml { get; set; }
member this.InnerXml : string with get, set
Public Overrides Property InnerXml As String
Valor de propiedad
Marcado de los nodos secundarios del nodo actual.
Excepciones
El código XML especificado al establecer esta propiedad no es correcto.
Comentarios
Al establecer esta propiedad, se reemplazan los elementos secundarios del nodo por el contenido analizado de la cadena especificada. El análisis se realiza en el contexto del espacio de nombres actual.
InnerXml
quita declaraciones de espacio de nombres redundantes. Como resultado, las numerosas operaciones de corte y pegado no aumentan el tamaño del documento con declaraciones de espacios de nombres redundantes. Tenga en cuenta el siguiente documento XSL:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="stock">
...
</xsl:template>
</xsl:stylesheet>
La InnerXml
propiedad del nodo de hoja de estilos devuelve la siguiente cadena:
<xsl:template match="stock"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
...
</xsl:template>
Observe la declaración de espacio de nombres xmlns:xsl adicional que se usa para conservar la identidad del nodo. Si vuelve a insertar esta cadena XML interna, obtendrá el documento original. En otras palabras, InnerXml
reconoce que la declaración de espacio de nombres xmlns:xsl es redundante, dado que el elemento primario xsl:stylesheet ya tiene la declaración de espacio de nombres xmlns:xsl y, por tanto, la quita.
Si se mueve InnerXml
de un documento sin espacio de nombres predeterminado a un documento con un espacio de nombres predeterminado, el comportamiento es un poco diferente. Tenga en cuenta la siguiente cadena XML:
<test>
<item>123</item>
</test>
InnerXml
devuelve una cadena XML sin formato sin declaraciones de espacio de nombres:
<item>123</item>
Si después inserta esta cadena en un documento que tiene un espacio de nombres predeterminado, como el siguiente:
<test2 xmlns="urn:1">
</test>
InnerXml
analiza la cadena en contexto y los nuevos nodos seleccionan el espacio de nombres urn:1. El resultado tiene el aspecto siguiente:
<test2 xmlns="urn:1">
<item>123</item>
</test>
Ahora, cuando solicite que InnerXml
devuelva lo siguiente:
<item xmlns="urn:1">123</item>
Si desea explícitamente que el elemento insertado conserve el hecho de que procede de un documento que no tenía ningún espacio de nombres, debe agregar manualmente una declaración xmlns= "" e insertar la cadena resultante:
<item xmlns="">123</item>
El efecto neto de todo esto es el siguiente:
Cortar y pegar
InnerXml
entre documentos que no usan espacios de nombres es limpio y sencillo y no crea redundancia "xmlns" en las cadenas.InnerXml
también se puede usar para cortar y pegar entre documentos que tienen más de un espacio de nombres (es decir, hojas de estilos XSL).Las declaraciones xmlns:xsl aparecen automáticamente en las cadenas y desaparecen en las jerarquías de nodos.
En caso de que se mueva
InnerXml
de un documento que no tenga ningún espacio de nombres predeterminado a un documento que tenga un espacio de nombres predeterminado, los nuevos nodos seleccionarán el nuevo espacio de nombres predeterminado.
Si InnerXml
se establece con texto que contiene referencias de entidad que no están definidas actualmente en el documento, el árbol resultante contendrá nodos EntityReference vacíos.
Esta propiedad es una extensión de Microsoft para Document Object Model (DOM).