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
InnerXml
entre documentos que não usam namespaces é limpo e simples e não cria redundância "xmlns" em suas cadeias de caracteres.InnerXml
també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
InnerXml
de 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).