XmlDocument.ImportNode(XmlNode, Boolean) Método

Definición

Importa un nodo de otro documento al documento actual.

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

Nodo que se va a importar.

deep
Boolean

true para producir un clon profundo; en caso contrario, false.

Devoluciones

XmlNode

XmlNode que se importó.

Excepciones

Llamar a este método en un tipo de nodo que no se pueden importar.

Ejemplos

En el ejemplo siguiente se importa un nodo de libro de un segundo documento XML al 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

En el ejemplo se usa el archivo , books.xmlcomo 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>

Comentarios

El nodo devuelto no tiene ningún elemento primario. El nodo de origen no se modifica ni quita del documento original; ImportNode crea una copia del nodo de origen.

La importación de un nodo crea un XmlNode objeto que pertenece al documento de importación, con Name y NodeType idéntico al nodo de origen. El nuevo objeto también tiene los atributos relacionados con los espacios de nombres (Prefix, LocalNamey NamespaceURI).

Según el tipo de nodo del nodo importado y el valor del deep parámetro , se copia información adicional según corresponda. Este método intenta reflejar el comportamiento esperado si un fragmento de código FUENTE XML o HTML se copió de un documento a otro (reconociendo que, en el caso XML, los dos documentos podrían tener DTD diferentes).

En la tabla siguiente se describe el comportamiento específico de cada XmlNodeType.

Tipo XmlNode ImportNode(true) ImportNode(false)
Atributo La Specified propiedad se establece true en en el objeto generado XmlAttribute. Los descendientes del origen XmlAttribute se importan de forma recursiva y los nodos resultantes se vuelven a ensamblar para formar el subárbol correspondiente. El deep parámetro no se aplica a XmlAttribute los nodos; siempre llevan sus elementos secundarios con ellos cuando se importan.
CData Copia el nodo, junto con sus datos. Copia el nodo, junto con sus datos.
Comentario Copia el nodo, junto con sus datos. Copia el nodo, junto con sus datos.
DocumentFragment Los descendientes del nodo de origen se importan de forma recursiva y los nodos resultantes se reensamblan para crear el subárbol correspondiente. Se genera un vacío XmlDocumentFragment .
DocumentType Copia el nodo, junto con sus datos.* Copia el nodo, junto con sus datos.*
Elemento Los descendientes del elemento de origen y sus nodos de atributo especificados se importan de forma recursiva y los nodos resultantes se vuelven a ensamblar para formar el subárbol correspondiente.

Nota: Los atributos predeterminados no se copian. Si el documento que se va a importar define atributos predeterminados para este nombre de elemento, dichos atributos se asignan.
Se importan los nodos de atributo especificados del elemento de origen y los nodos generados XmlAttribute se adjuntan al elemento generado XmlElement.

Nota: Los atributos predeterminados no se copian. Si el documento que se va a importar define atributos predeterminados para este nombre de elemento, dichos atributos se asignan.
EntityReference Dado que los documentos de origen y destino podrían tener definidas las entidades de forma diferente, este método solo copia el XmlEntityReference nodo. El texto de sustitución no se incluye. Si el documento de destino tiene definida la entidad, se asigna su valor. Dado que los documentos de origen y destino podrían tener definidas las entidades de forma diferente, este método solo copia el XmlEntityReference nodo. El texto de sustitución no se incluye. Si el documento de destino tiene definida la entidad, se asigna su valor.
ProcessingInstruction Copia el valor de destino y de datos del nodo importado. Copia el valor de destino y de datos del nodo importado.
Texto Copia el nodo, junto con sus datos. Copia el nodo, junto con sus datos.
SignificantWhitespace Copia el nodo, junto con sus datos. Copia el nodo, junto con sus datos.
Espacio en blanco Copia el nodo, junto con sus datos. Copia el nodo, junto con sus datos.
XmlDeclaration Copia el valor de destino y de datos del nodo importado. Copia el valor de destino y de datos del nodo importado.
Todos los demás tipos de nodo. Estos tipos de nodos no se pueden importar. Estos tipos de nodos no se pueden importar.

*Aunque se pueden importar nodos DocumentType, un documento solo puede tener un DocumentType. Si el documento tiene actualmente un nodo DocumentType, debe quitarse antes de agregar uno nuevo.

Se aplica a