XmlDocument.ImportNode(XmlNode, Boolean) Método
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.
Importa um nó de outro documento para o documento atual.
public:
virtual System::Xml::XmlNode ^ ImportNode(System::Xml::XmlNode ^ node, bool deep);
public virtual System.Xml.XmlNode ImportNode (System.Xml.XmlNode node, bool deep);
abstract member ImportNode : System.Xml.XmlNode * bool -> System.Xml.XmlNode
override this.ImportNode : System.Xml.XmlNode * bool -> System.Xml.XmlNode
Public Overridable Function ImportNode (node As XmlNode, deep As Boolean) As XmlNode
Parâmetros
- node
- XmlNode
O nó que está sendo importado.
- deep
- Boolean
true
para executar um clone profundo; caso contrário, false
.
Retornos
O XmlNode importado.
Exceções
Chamando esse método em um tipo de nó que não pode ser importado.
Exemplos
O exemplo a seguir importa um nó de livro de um segundo documento XML para o documento XML original.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
//Create the XmlDocument.
XmlDocument^ doc = gcnew XmlDocument;
doc->LoadXml( "<bookstore><book genre='novel' ISBN='1-861001-57-5'><title>Pride And Prejudice</title></book></bookstore>" );
//Create another XmlDocument which holds a list of books.
XmlDocument^ doc2 = gcnew XmlDocument;
doc2->Load( "books.xml" );
//Import the last book node from doc2 into the original document.
XmlNode^ newBook = doc->ImportNode( doc2->DocumentElement->LastChild, true );
doc->DocumentElement->AppendChild( newBook );
Console::WriteLine( "Display the modified XML..." );
doc->Save( Console::Out );
}
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
//Create the XmlDocument.
XmlDocument doc = new XmlDocument();
doc.LoadXml("<bookstore>" +
"<book genre='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</book>" +
"</bookstore>");
//Create another XmlDocument which holds a list of books.
XmlDocument doc2 = new XmlDocument();
doc2.Load("books.xml");
//Import the last book node from doc2 into the original document.
XmlNode newBook = doc.ImportNode(doc2.DocumentElement.LastChild, true);
doc.DocumentElement.AppendChild(newBook);
Console.WriteLine("Display the modified XML...");
doc.Save(Console.Out);
}
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
'Create the XmlDocument.
Dim doc As New XmlDocument()
doc.LoadXml("<bookstore>" & _
"<book genre='novel' ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"</book>" & _
"</bookstore>")
'Create another XmlDocument which holds a list of books.
Dim doc2 As New XmlDocument()
doc2.Load("books.xml")
'Import the last book node from doc2 into the original document.
Dim newBook As XmlNode = doc.ImportNode(doc2.DocumentElement.LastChild, True)
doc.DocumentElement.AppendChild(newBook)
Console.WriteLine("Display the modified XML...")
doc.Save(Console.Out)
End Sub
End Class
O exemplo usa o arquivo, books.xml
como entrada.
<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Comentários
O nó retornado não tem pai. O nó de origem não é alterado ou removido do documento original; ImportNode
cria uma cópia do nó de origem.
A importação de um nó cria um XmlNode
objeto pertencente ao documento de importação, com Name e NodeType idêntico ao nó de origem. O novo objeto também tem os atributos relacionados a namespaces (PrefixLocalNameeNamespaceURI).
Dependendo do tipo de nó do nó importado e do valor do deep
parâmetro, 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 (reconhecendo que, no caso XML, os dois documentos podem ter DTDs diferentes).
A tabela a seguir descreve o comportamento específico para cada XmlNodeType.
XmlNodeType | ImportNode(true) | ImportNode(false) |
---|---|---|
Atributo | A Specified propriedade está definida como true no gerado XmlAttribute. Os descendentes da origem XmlAttribute são importados recursivamente e os nós resultantes remontados para formar a subárvore correspondente. |
O deep parâmetro não se aplica aos XmlAttribute nós; eles sempre carregam seus filhos com eles quando importados. |
CDATA | Copia o nó, incluindo seus dados. | Copia o nó, incluindo seus dados. |
Comentário | Copia o nó, incluindo seus dados. | Copia o nó, incluindo seus dados. |
DocumentFragment | Os descendentes nó de origem recursivamente serão importados e os nós resultantes são remontados para formar a subárvore correspondente. | Um vazio XmlDocumentFragment é gerado. |
DocumentType | Copia o nó, incluindo seu data.* | Copia o nó, incluindo seu data.* |
Elemento | Os descendentes do elemento de origem e seus nós de atributo especificados são importados recursivamente e os nós resultantes remontados para formar a subárvore correspondente. Observação: os atributos padrão não são copiados. Se o documento que está sendo importado define atributos padrão para este nome de elemento, esses são atribuídos. |
Os nós de atributo especificados do elemento de origem são importados e os nós gerados XmlAttribute são anexados ao gerado XmlElement.Observação: os atributos padrão não são copiados. Se o documento que está sendo importado define atributos padrão para este nome de elemento, esses são atribuídos. |
EntityReference | Como os documentos de origem e de destino podem ter as entidades definidas de forma diferente, esse método copia apenas o XmlEntityReference nó. O texto de substituição não é incluído. Se o documento de destino tem a entidade definida, o valor é atribuído. | Como os documentos de origem e de destino podem ter as entidades definidas de forma diferente, esse método copia apenas o XmlEntityReference nó. O texto de substituição não é incluído. Se o documento de destino tem a entidade definida, o valor é atribuído. |
ProcessingInstruction | Copia o destino e o valor do nó importado. | Copia o destino e o valor do nó importado. |
Texto | Copia o nó, incluindo seus dados. | Copia o nó, incluindo seus dados. |
SignificantWhitespace | Copia o nó, incluindo seus dados. | Copia o nó, incluindo seus dados. |
Espaço em branco | Copia o nó, incluindo seus dados. | Copia o nó, incluindo seus dados. |
XmlDeclaration | 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. |
*Embora os nós do DocumentType possam ser importados, um documento só pode ter um DocumentType. Se o documento tiver atualmente um nó DocumentType, ele deverá ser removido antes de adicionar um novo.