Compartilhar via


Copiando nós existentes de um documento para outro

O método ImportNode é o mecanismo pelo qual um nó ou uma subárvore inteira do nó são copiados de um XmlDocument para outro. O nó retornado de chamada é uma cópia do nó do documento de origem, incluindo valores de atributo, nome de nó, tipo de nó, e todos os atributos URL relacionados como o prefixo, o nome local, e namespace Uniform Resource Identifier (URI). O documento de origem não foi alterado. Depois que você importou o nó, você ainda precisará adicioná-lo à árvore usando um dos métodos usados para nós de inserção.

Quando o nó é anexado ao novo documento, o novo documento possui o nó. O motivo é que cada nó, quando criado, tem um documento proprietário, mesmo se os nós são criados em partes separados do documento. Esse é um requisito do DOM (Modelo de Objeto de Documento XML) e é imposto pelo design de criação de fábrica na classe XmlDocument . Por exemplo, CreateElement é a única maneira de criar novos nós.

Dependendo do tipo do nó importado e do valor do parâmetro profundo, informações adicionais são copiadas conforme apropriado. Esse método tenta espelhar o comportamento esperado se um fragmento de origem XML ou HTML foi copiado de um documento para outro, contabilizando o fato de que, para XML, os dois documentos podem ter DTDs (definições de tipo de documento) diferentes.

A tabela a seguir descreve o comportamento específico para cada tipo de nó que pode ser importado.

Tipo de nó parâmetro deep é verdadeiro deep parâmetro é falso
XmlAttribute O Specified é definido como true no XmlAttribute. Os descendentes do XmlAttribute de origem são importados recursivamente e os nós resultantes são remontados para formar a subárvore correspondente. O parâmetro deep não se aplica a nós XmlAttribute, pois eles sempre levam seus filhos quando importados.
XmlCDataSection Copia o nó, incluindo seus dados. Copia o nó, incluindo seus dados.
XmlComment Copia o nó, incluindo seus dados. Copia o nó, incluindo seus dados.
XmlDocumentFragment Os descendentes do nó de origem são importados recursivamente e os nós resultantes são reorganizados para formar a subárvore correspondente. Um XmlDocumentFragment vazio é criado.
XmlDocumentType Copia o nó, incluindo seu data.* Copia o nó, incluindo seu data.*
XmlElement Os descendentes do elemento de origem são importados recursivamente e os nós resultantes são remontados para formar a subárvore correspondente. Nota: Os atributos padrão não são copiados. Se o documento para o qual está sendo importado definir atributos padrão para este nome de elemento, esses atributos serão atribuídos. Os nós de atributo especificados do elemento de origem são importados e os nós XmlAttribute gerados são anexados ao novo elemento. Os nós descendentes não são copiados. Nota: Os atributos padrão não são copiados. Se o documento para o qual está sendo importado definir atributos padrão para este nome de elemento, esses atributos serão atribuídos.
XmlEntityReference Como os documentos de origem e destino podem ter as entidades definidas de maneira diferente, esse método copia somente o nó XmlEntityReference. O texto de substituição não está incluído. Se o documento de destino tiver a entidade definida, seu valor será atribuído. Como os documentos de origem e destino podem ter as entidades definidas de maneira diferente, esse método copia somente o nó XmlEntityReference. O texto de substituição não está incluído. Se o documento de destino tiver a entidade definida, seu valor será atribuído.
XmlProcessingInstruction Copia o destino e o valor do nó importado. Copia o destino e o valor do nó importado.
XmlText Copia o nó, incluindo seus dados. Copia o nó, incluindo seus dados.
XmlSignificantWhitespace Copia o nó, incluindo seus dados. Copia o nó, incluindo seus dados.
XmlWhitespace Copia o nó, incluindo seus dados. Copia o nó, incluindo seus dados.
Declaração XML Copia o destino e o valor do nó importado. Copia o destino e o valor do nó importado.
Todos os outros tipos de nó Esses tipos de nós não podem ser importados. Esses tipos de nós não podem ser importados.

Observação

Embora os nós DocumentType possam ser importados, um documento só pode ter um DocumentType. Assim, uma vez que você importou o tipo de documento, antes de inseri-lo na árvore você precisará certificar-se que não há documento tipo no documento. Para obter informações sobre como remover nós, consulte Removendo nós, conteúdo e valores de um documento XML.

Consulte também