Compartir vía


XmlDocument.InnerXml Propiedad

Definición

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:

  1. Cortar y pegar InnerXml entre documentos que no usan espacios de nombres es limpio y sencillo y no crea redundancia "xmlns" en las cadenas.

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

  3. Las declaraciones xmlns:xsl aparecen automáticamente en las cadenas y desaparecen en las jerarquías de nodos.

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

Se aplica a