XmlDocument.ImportNode(XmlNode, Boolean) Método

Definición

Importa un nodo de otro documento al documento actual.Imports a node from another document to the current document.

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.The node being imported.

deep
Boolean

true para producir un clon profundo; en caso contrario, false.true to perform a deep clone; otherwise, false.

Devoluciones

XmlNode que se importó.The imported XmlNode.

Excepciones

Llamar a este método en un tipo de nodo que no se pueden importar.Calling this method on a node type which cannot be imported.

Ejemplos

En el ejemplo siguiente se importa un nodo de libro de un segundo documento XML en el documento XML original.The following example imports a book node from a second XML document into the original XML document.

#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 books.xmlarchivo,, como entrada.The example uses the file, books.xml, as input.

<?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.The returned node has no parent. El nodo de origen no se modifica ni se quita del documento original. ImportNode crea una copia del nodo de origen.The source node is not altered or removed from the original document; ImportNode creates a copy of the source node.

Al importar un nodo, XmlNode se crea un objeto propiedad del documento de Name importación NodeType , con y idéntico al nodo de origen.Importing a node creates an XmlNode object owned by the importing document, with Name and NodeType identical to the source node. El nuevo objeto también tiene los atributos relacionados con los espacios dePrefixnombres LocalName(, NamespaceURIy).The new object also has the attributes related to namespaces (Prefix, LocalName, and NamespaceURI).

Dependiendo del tipo de nodo del nodo importado y del valor del deep parámetro, se copiará información adicional según corresponda.Depending on the node type of the imported node and the value of the deep parameter, additional information is copied as appropriate. Este método intenta reflejar el comportamiento esperado si se copió un fragmento de código fuente XML o HTML de un documento a otro (teniendo en cuenta que, en el caso de XML, los dos documentos podrían tener diferentes DTD).This method attempts to mirror the behavior expected if a fragment of XML or HTML source was copied from one document to another (recognizing that, in the XML case, the two documents could have different DTDs).

En la tabla siguiente se describe el comportamiento específico XmlNodeTypede cada uno de ellos.The following table describes the specific behavior for each XmlNodeType.

Tipo XmlNodeXmlNodeType ImportNode (true)ImportNode(true) ImportNode(false)ImportNode(false)
AtributoAttribute La Specified propiedad se true establece en en el generado XmlAttribute.The Specified property is set to true on the generated XmlAttribute. Los descendientes del origen XmlAttribute se importan de forma recursiva y los nodos resultantes se reensamblan para formar el subárbol correspondiente.The descendants of the source XmlAttribute are recursively imported and the resulting nodes reassembled to form the corresponding subtree. El deep parámetro no se aplica a XmlAttribute los nodos; siempre transportan sus elementos secundarios cuando se importan.The deep parameter does not apply to XmlAttribute nodes; they always carry their children with them when imported.
CDataCData Copia el nodo, junto con sus datos.Copies the node, including its data. Copia el nodo, junto con sus datos.Copies the node, including its data.
ComentarioComment Copia el nodo, junto con sus datos.Copies the node, including its data. Copia el nodo, junto con sus datos.Copies the node, including its data.
DocumentFragmentDocumentFragment Los descendientes del nodo de origen se importan de forma recursiva y los nodos resultantes se reensamblan para crear el subárbol correspondiente.The descendants of the source node are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Se genera XmlDocumentFragment un vacío.An empty XmlDocumentFragment is generated.
DocumentTypeDocumentType Copia el nodo, junto con sus datos.*Copies the node, including its data.* Copia el nodo, junto con sus datos.*Copies the node, including its data.*
ElementoElement Los descendientes del elemento de origen y sus nodos de atributo especificados se importan de forma recursiva y los nodos resultantes se reensamblan para formar el subárbol correspondiente.The descendants of the source element and its specified attribute nodes are recursively imported and the resulting nodes reassembled to form the corresponding subtree.

Nota: Los atributos predeterminados no se copian.Note: Default attributes are not copied. Si el documento que se va a importar define atributos predeterminados para este nombre de elemento, dichos atributos se asignan.If the document being imported into defines default attributes for this element name, those are assigned.
Los nodos de atributo especificados del elemento de origen se importan XmlAttribute y los nodos generados se XmlElementadjuntan al generado.Specified attribute nodes of the source element are imported, and the generated XmlAttribute nodes are attached to the generated XmlElement.

Nota: Los atributos predeterminados no se copian.Note: Default attributes are not copied. Si el documento que se va a importar define atributos predeterminados para este nombre de elemento, dichos atributos se asignan.If the document being imported into defines default attributes for this element name, those are assigned.
EntityReferenceEntityReference Dado que los documentos de origen y de destino podrían tener las entidades definidas de forma diferente, XmlEntityReference este método solo copia el nodo.Because the source and destination documents could have the entities defined differently, this method only copies the XmlEntityReference node. El texto de sustitución no se incluye.The replacement text is not included. Si el documento de destino tiene definida la entidad, se asigna su valor.If the destination document has the entity defined, its value is assigned. Dado que los documentos de origen y de destino podrían tener las entidades definidas de forma diferente, XmlEntityReference este método solo copia el nodo.Because the source and destination documents could have the entities defined differently, this method only copies the XmlEntityReference node. El texto de sustitución no se incluye.The replacement text is not included. Si el documento de destino tiene definida la entidad, se asigna su valor.If the destination document has the entity defined, its value is assigned.
ProcessingInstructionProcessingInstruction Copia el valor de destino y de datos del nodo importado.Copies the target and data value from the imported node. Copia el valor de destino y de datos del nodo importado.Copies the target and data value from the imported node.
TextoText Copia el nodo, junto con sus datos.Copies the node, including its data. Copia el nodo, junto con sus datos.Copies the node, including its data.
SignificantWhitespaceSignificantWhitespace Copia el nodo, junto con sus datos.Copies the node, including its data. Copia el nodo, junto con sus datos.Copies the node, including its data.
WhitespaceWhitespace Copia el nodo, junto con sus datos.Copies the node, including its data. Copia el nodo, junto con sus datos.Copies the node, including its data.
XmlDeclarationXmlDeclaration Copia el valor de destino y de datos del nodo importado.Copies the target and data value from the imported node. Copia el valor de destino y de datos del nodo importado.Copies the target and data value from the imported node.
Todos los demás tipos de nodo.All other node types. Estos tipos de nodos no se pueden importar.These node types cannot be imported. Estos tipos de nodos no se pueden importar.These node types cannot be imported.

* Aunque se pueden importar nodos DocumentType, un documento solo puede tener un DocumentType.*Although DocumentType nodes can be imported, a document can only have one DocumentType. Si el documento tiene actualmente un nodo DocumenType, debe quitarse antes de agregar uno nuevo.If the document currently has a DocumenType node, it must be removed before adding a new one.

Se aplica a