Partilhar via


Modificando nós, conteúdo e valores em um documento XML

Há muitas maneiras de modificar os nós e o conteúdo de um documento. É possível:

  • Altere o valor dos nós usando a Value propriedade.

  • Modifique um conjunto inteiro de nós substituindo os nós por novos nós. Isso é feito usando a InnerXml propriedade.

  • Substitua nós existentes por novos nós usando o RemoveChild método.

  • Adicione caracteres adicionais aos nós que herdam da classe XmlCharacterData usando os métodos AppendData, InsertData ou ReplaceData.

  • Modifique o conteúdo removendo uma gama de caracteres usando o método DeleteData em tipos de nó que herdam do XmlCharacterData.

Uma técnica simples para alterar o valor de um nó é usar node.Value = "new value";. A tabela a seguir lista os tipos de nó em que essa única linha de código funciona e exatamente quais dados para esse tipo de nó são alterados.

Tipo de nó Dados alterados
Atributo O valor do atributo.
Seção CDATA O conteúdo do CDATASection.
Comentário O conteúdo do comentário.
Instruções de processamento O conteúdo, excluindo o alvo.
Texto O conteúdo do texto.
Declaração XML O conteúdo da declaração, excluindo a marcação <?xml e ?>.
Espaço em branco O valor do espaço em branco. Você pode definir o valor como um dos quatro caracteres de espaço em branco XML reconhecidos: espaço, tabulação, CR ou LF.
Espaço branco significativo O valor do espaço em branco significativo. Você pode definir o valor como um dos quatro caracteres de espaço em branco XML reconhecidos: espaço, tabulação, CR ou LF.

Qualquer tipo de nó não listado na tabela não é um tipo de nó válido para definir um valor. Definir um valor num outro tipo de nó lança uma exceção InvalidOperationException.

A propriedade InnerXml altera a marcação dos nós filhos do nó atual. A configuração dessa propriedade substitui os nós filho pelo conteúdo analisado da cadeia de caracteres fornecida. A análise é feita no contexto de namespace atual. Além disso, 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 de namespace redundantes. Para obter um exemplo de código que mostra o efeito de namespaces na operação InnerXml, consulte a propriedade InnerXml.

Ao usar os métodos ReplaceData e RemoveChild, os métodos retornam o nó substituído ou removido. Este nó pode então ser reinserido em outro lugar no XML Document Object Model (DOM). O ReplaceData método faz duas verificações de validação no nó que está a ser inserido no documento. A primeira verificação garante que o nó está se tornando filho de um nó que pode ter nós filhos de seu tipo. A segunda verificação garante que o nó que está sendo inserido não é um ancestral do nó do qual está se tornando um filho. Violar qualquer uma dessas condições gera um InvalidOperationException.

É válido adicionar ou remover um filho somente leitura de um nó que pode ser editado. No entanto, as tentativas de modificar o próprio nó somente leitura lançam um InvalidOperationException. Um exemplo disso é modificar os filhos de um nó XmlEntityReference. Os elementos filhos são de acesso apenas para leitura e não podem ser modificados. Qualquer tentativa de modificá-los gera um InvalidOperationException.

Ver também