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.