XmlDocument.ImportNode(XmlNode, Boolean) XmlDocument.ImportNode(XmlNode, Boolean) XmlDocument.ImportNode(XmlNode, Boolean) XmlDocument.ImportNode(XmlNode, Boolean) Method

Definition

Importiert einen Knoten aus einem anderen Dokument in das aktuelle Dokument.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

Parameter

node
XmlNode XmlNode XmlNode XmlNode

Der Knoten, der importiert wird.The node being imported.

deep
Boolean Boolean Boolean Boolean

true für das Erstellen eines tiefen Klons, andernfalls false.true to perform a deep clone; otherwise, false.

Gibt zurück

Der importierte XmlNode.The imported XmlNode.

Ausnahmen

Aufrufen dieser Methode für einen Knotentyp, der nicht importiert werden kann.Calling this method on a node type which cannot be imported.

Beispiele

Im folgenden Beispiel wird ein Buch Knoten aus einem zweiten XML-Dokument in das ursprüngliche XML-Dokument importiert.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

Im Beispiel wird die-Datei books.xmlals Eingabe verwendet.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>

Hinweise

Der zurückgegebene Knoten weist kein übergeordnetes Element auf.The returned node has no parent. Der Quellknoten wird nicht geändert oder aus dem ursprünglichen Dokument entfernt. ImportNode erstellt eine Kopie des Quell Knotens.The source node is not altered or removed from the original document; ImportNode creates a copy of the source node.

Beim Importieren eines Knotens XmlNode wird ein Objekt erstellt, das im Besitz Name des NodeType importierten Dokuments ist und mit dem Quellknoten identisch ist.Importing a node creates an XmlNode object owned by the importing document, with Name and NodeType identical to the source node. Das neue-Objekt verfügt auch über die Attribute, die sich aufPrefixNamespaces NamespaceURIbeziehen (, LocalNameund).The new object also has the attributes related to namespaces (Prefix, LocalName, and NamespaceURI).

Abhängig vom Knotentyp des importierten Knotens und dem Wert des deep Parameters werden nach Bedarf zusätzliche Informationen kopiert.Depending on the node type of the imported node and the value of the deep parameter, additional information is copied as appropriate. Diese Methode versucht, das Verhalten zu spiegeln, das erwartet wird, wenn ein XML-oder HTML-Fragment aus einem Dokument in ein anderes kopiert wurde (wobei erkannt wird, dass die beiden Dokumente im XML-Fall unterschiedliche DTDs aufweisen könnten).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).

In der folgenden Tabelle wird das jeweilige Verhalten XmlNodeTypebeschrieben.The following table describes the specific behavior for each XmlNodeType.

XmlNodeTypeXmlNodeType ImportNode (true)ImportNode(true) ImportNode (false)ImportNode(false)
AttributAttribute Die Specified -Eigenschaft wird für true den generierten XmlAttributeauf festgelegt.The Specified property is set to true on the generated XmlAttribute. Die Nachfolger der Quelle XmlAttribute werden rekursiv importiert, und die resultierenden Knoten werden wieder zusammengefügt, um die entsprechende Unterstruktur zu bilden.The descendants of the source XmlAttribute are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Der deep -Parameter gilt nicht für XmlAttribute -Knoten; Sie tragen beim Importieren stets ihre untergeordneten Elemente mit Ihnen.The deep parameter does not apply to XmlAttribute nodes; they always carry their children with them when imported.
CDATACData Kopiert den Knoten einschließlich der zugehörigen Daten.Copies the node, including its data. Kopiert den Knoten einschließlich der zugehörigen Daten.Copies the node, including its data.
KommentarComment Kopiert den Knoten einschließlich der zugehörigen Daten.Copies the node, including its data. Kopiert den Knoten einschließlich der zugehörigen Daten.Copies the node, including its data.
DocumentFragmentDocumentFragment Die untergeordneten Elemente des Quellknotens werden rekursiv importiert. Die daraus resultierenden Knoten werden neu assembliert und bilden die entsprechende Teilstruktur.The descendants of the source node are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Eine leere XmlDocumentFragment wird generiert.An empty XmlDocumentFragment is generated.
DocumentTypeDocumentType Kopiert den Knoten einschließlich der zugehörigen Daten.*Copies the node, including its data.* Kopiert den Knoten einschließlich der zugehörigen Daten.*Copies the node, including its data.*
ElementElement Die Nachfolger des Quell Elements und der angegebenen Attribut Knoten werden rekursiv importiert, und die resultierenden Knoten werden wieder zusammengefügt, um die entsprechende Unterstruktur zu bilden.The descendants of the source element and its specified attribute nodes are recursively imported and the resulting nodes reassembled to form the corresponding subtree.

Hinweis: Standardattribute werden nicht kopiert.Note: Default attributes are not copied. Wenn das Dokument, in das importiert wird, Standardattribute für diesen Elementnamen definiert, werden diese zugewiesen.If the document being imported into defines default attributes for this element name, those are assigned.
Die angegebenen Attribut Knoten des Quell Elements werden importiert, und die generierten XmlAttribute Knoten werden an den generierten XmlElementangefügt.Specified attribute nodes of the source element are imported, and the generated XmlAttribute nodes are attached to the generated XmlElement.

Hinweis: Standardattribute werden nicht kopiert.Note: Default attributes are not copied. Wenn das Dokument, in das importiert wird, Standardattribute für diesen Elementnamen definiert, werden diese zugewiesen.If the document being imported into defines default attributes for this element name, those are assigned.
EntityReferenceEntityReference Da in den Quell-und Ziel Dokumenten die Entitäten unterschiedlich definiert sein können, kopiert XmlEntityReference diese Methode nur den Knoten.Because the source and destination documents could have the entities defined differently, this method only copies the XmlEntityReference node. Der Ersetzungstext ist davon nicht betroffen.The replacement text is not included. Wenn die Entität des Zieldokuments definiert ist, wird deren Wert zugewiesen.If the destination document has the entity defined, its value is assigned. Da in den Quell-und Ziel Dokumenten die Entitäten unterschiedlich definiert sein können, kopiert XmlEntityReference diese Methode nur den Knoten.Because the source and destination documents could have the entities defined differently, this method only copies the XmlEntityReference node. Der Ersetzungstext ist davon nicht betroffen.The replacement text is not included. Wenn die Entität des Zieldokuments definiert ist, wird deren Wert zugewiesen.If the destination document has the entity defined, its value is assigned.
ProcessingInstructionProcessingInstruction Kopiert den Ziel- und Datenwert des importierten Knotens.Copies the target and data value from the imported node. Kopiert den Ziel- und Datenwert des importierten Knotens.Copies the target and data value from the imported node.
TextText Kopiert den Knoten einschließlich der zugehörigen Daten.Copies the node, including its data. Kopiert den Knoten einschließlich der zugehörigen Daten.Copies the node, including its data.
SignificantWhitespaceSignificantWhitespace Kopiert den Knoten einschließlich der zugehörigen Daten.Copies the node, including its data. Kopiert den Knoten einschließlich der zugehörigen Daten.Copies the node, including its data.
WhitespaceWhitespace Kopiert den Knoten einschließlich der zugehörigen Daten.Copies the node, including its data. Kopiert den Knoten einschließlich der zugehörigen Daten.Copies the node, including its data.
XmlDeclarationXmlDeclaration Kopiert den Ziel- und Datenwert des importierten Knotens.Copies the target and data value from the imported node. Kopiert den Ziel- und Datenwert des importierten Knotens.Copies the target and data value from the imported node.
Alle anderen Knoten Typen.All other node types. Diese Knotentypen können nicht importiert werden.These node types cannot be imported. Diese Knotentypen können nicht importiert werden.These node types cannot be imported.

* Obwohl DocumentType-Knoten importiert werden können, kann ein Dokument nur einen DocumentType aufweisen.*Although DocumentType nodes can be imported, a document can only have one DocumentType. Wenn das Dokument derzeit über einen documentype-Knoten verfügt, muss es entfernt werden, bevor ein neues Dokument hinzugefügt wird.If the document currently has a DocumenType node, it must be removed before adding a new one.

Gilt für: