XmlDocument.InnerXml Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define a marcação que representa os filhos do nó atual.
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 da propriedade
A marcação dos filhos do nó atual.
Exceções
O XML especificado ao definir essa propriedade não está bem formado.
Comentários
Definir essa propriedade substitui os filhos do nó pelo conteúdo analisado da cadeia de caracteres fornecida. A análise é feita no contexto do namespace atual.
InnerXml remove declarações de namespace redundantes. Como resultado, várias operações de recortar e colar não aumentam o tamanho do documento com declarações redundantes de namespace. Considere o seguinte documento XSL:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="stock">
...
</xsl:template>
</xsl:stylesheet>
A InnerXml propriedade no nó folha de estilos retorna a seguinte cadeia de caracteres:
<xsl:template match="stock"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
...
</xsl:template>
Observe a declaração de namespace xmlns:xsl adicional que é usada para preservar a identidade do nó. Se você inserir novamente essa cadeia de caracteres XML interna, você receberá de volta o documento original. Em outras palavras, InnerXml reconhece que a declaração de namespace xmlns:xsl é redundante, considerando que o elemento pai xsl:stylesheet já tem a declaração de namespace xmlns:xsl e, portanto, a remove.
Se você passar InnerXml de um documento sem namespace padrão para um documento com um namespace padrão, o comportamento será um pouco diferente. Considere a seguinte cadeia de caracteres XML:
<test>
<item>123</item>
</test>
InnerXml retorna uma cadeia de caracteres XML simples sem declarações de namespace:
<item>123</item>
Se você inserir essa cadeia de caracteres em um documento que tenha um namespace padrão, como o seguinte:
<test2 xmlns="urn:1">
</test>
InnerXml analisa a cadeia de caracteres no contexto e os novos nós captam o namespace urn:1. O resultado será semelhante a este:
<test2 xmlns="urn:1">
<item>123</item>
</test>
Agora, quando você pedir o InnerXml seguinte, você receberá de volta o seguinte:
<item xmlns="urn:1">123</item>
Se você quiser explicitamente que o item inserido preserve o fato de que ele veio de um documento que não tinha namespace, será necessário adicionar manualmente uma declaração xmlns= "" e inserir a cadeia de caracteres resultante:
<item xmlns="">123</item>
O efeito líquido de tudo isso é o seguinte:
Cortar e colar
InnerXmlentre documentos que não usam namespaces é limpo e simples e não cria redundância "xmlns" em suas cadeias de caracteres.InnerXmltambém pode ser usado para recortar e colar entre documentos que têm mais de um namespace (ou seja, folhas de estilo XSL).As declarações xmlns:xsl aparecem automaticamente em suas cadeias de caracteres e desaparecem nas hierarquias do nó.
No caso em que você estiver migrando
InnerXmlde um documento sem namespace padrão para um documento que tenha um namespace padrão, os novos nós pegarão o novo namespace padrão.
Se InnerXml for definido com texto contendo referências de entidade que não estão definidas no momento no documento, a árvore resultante conterá nós de EntityReference vazios.
Essa propriedade é uma extensão da Microsoft do DOM (Modelo de Objeto do Documento).