Partilhar via


Copiando nós existentes de um documento para outro

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

Quando o nó é anexado ao novo documento, o novo documento é proprietário do nó. O motivo é que cada nó, quando criado, tem um documento próprio, mesmo que os nós sejam criados em fragmentos de documento separados. Este é um requisito do DOM (Document Object Model) 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 de nó do nó importado e do valor do parâmetro deep, 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, levando em conta o fato de que, para XML, os dois documentos podem ter definições de tipo de documento (DTDs) diferentes.

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

Tipo de Nó parâmetro profundo é verdadeiro parâmetro deep é falso
XmlAttribute O Specified é definido como true no XmlAttribute. Os descendentes do XmlAttribute de origem são importados recursivamente e os nós resultantes remontados para formar a subárvore correspondente. O parâmetro deep não se aplica aos nós XmlAttribute , porque eles sempre carregam seus nós filhos com eles 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 recursivamente importados e os nós resultantes remontados para formar a subárvore correspondente. Um XmlDocumentFragment vazio é criado.
XmlDocumentType Copia o nó, incluindo seus dados.* Copia o nó, incluindo seus dados.*
XmlElement Os descendentes do elemento de origem são importados recursivamente e os nós resultantes remontados para formar a subárvore correspondente. Nota: Os atributos padrão não são copiados. Se o documento que está sendo importado definir atributos padrão para esse nome de elemento, eles serão atribuídos. Os nós de atributo especificados do elemento source 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 que está sendo importado definir atributos padrão para esse nome de elemento, eles serão atribuídos.
XmlEntityReference Como os documentos de origem e destino podem ter as entidades definidas de forma diferente, esse método copia apenas 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 forma diferente, esse método copia apenas 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 de dados do nó importado. Copia o destino e o valor de dados 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.
XmlDeclaration Copia o destino e o valor de dados do nó importado. Copia o destino e o valor de dados do nó importado.
Todos os outros tipos de nó Esses tipos de nó não podem ser importados. Esses tipos de nó não podem ser importados.

Nota

Embora os nós DocumentType possam ser importados, um documento só pode ter um DocumentType. Assim, depois de importar o tipo de documento, antes de inseri-lo na árvore, você deve certificar-se de que não há nenhum tipo de documento 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