Freigeben über


XmlDocument.ImportNode(XmlNode, Boolean) Methode

Definition

Importiert einen Knoten aus einem anderen Dokument in das aktuelle Dokument.

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

Der zu importierende Knoten.

deep
Boolean

truezum Ausführen eines tiefen Klons; andernfalls . false

Gibt zurück

Der importierte XmlNode.

Ausnahmen

Der Knotentyp kann nicht importiert werden.

Beispiele

Im folgenden Beispiel wird ein Buchknoten aus einem zweiten XML-Dokument in das ursprüngliche XML-Dokument importiert.

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 als books.xmlEingabe verwendet.

<?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 hat kein übergeordnetes Element. Der Quellknoten wird nicht geändert oder aus dem originalen Dokument entfernt. ImportNode erstellt eine Kopie des Quellknotens.

Beim Importieren eines Knotens wird ein XmlNode Objekt erstellt, das dem importierenden Dokument gehört und NodeType mit Name dem Quellknoten identisch ist. Das neue Objekt verfügt auch über die Attribute im Zusammenhang mit Namespaces (Prefix, LocalNameund NamespaceURI).

Je nach Knotentyp des importierten Knotens und dem Wert des deep Parameters werden ggf. zusätzliche Informationen kopiert. Diese Methode versucht, das erwartete Verhalten zu spiegeln, wenn ein Fragment von XML- oder HTML-Quelle aus einem Dokument in ein anderes kopiert wurde (wobei erkannt wird, dass die beiden Dokumente im XML-Fall unterschiedliche DTDs haben könnten).

Die folgende Tabelle beschreibt das spezifische Verhalten für jedes XmlNodeType.

Xmlnodetype ImportNode(true) ImportNode(false)
Merkmal Die Specified Eigenschaft wird für die generierte XmlAttributeEigenschaft festgelegttrue. Die Nachfolger der Quelle XmlAttribute werden rekursiv importiert und die resultierenden Knoten neu zusammengesetzt, um die entsprechende Unterstruktur zu bilden. Der deep Parameter gilt nicht für XmlAttribute Knoten; sie tragen beim Importieren immer ihre untergeordneten Elemente mit.
CData Kopiert den Knoten einschließlich seiner Daten. Kopiert den Knoten einschließlich seiner Daten.
Kommentar Kopiert den Knoten einschließlich seiner Daten. Kopiert den Knoten einschließlich seiner Daten.
DocumentFragment Die Nachfolger des Quellknotens werden rekursiv importiert und die resultierenden Knoten neu zusammengesetzt, um die entsprechende Unterstruktur zu bilden. Es wird ein leerer XmlDocumentFragment Text generiert.
Dokumenttyp Kopiert den Knoten einschließlich seiner Daten.* Kopiert den Knoten einschließlich seiner Daten.*
Element Die Nachfolger des Quellelements und der angegebenen Attributknoten werden rekursiv importiert und die resultierenden Knoten neu zusammengesetzt, um die entsprechende Unterstruktur zu bilden.

Hinweis: Standardattribute werden nicht kopiert. Wenn das Dokument, in das importiert wird, Standardattribute für diesen Elementnamen definiert, werden diese zugewiesen.
Angegebene Attributknoten des Quellelements werden importiert, und die generierten Knoten werden an die generierte XmlAttributeXmlElementKomponente angefügt.

Hinweis: Standardattribute werden nicht kopiert. Wenn das Dokument, in das importiert wird, Standardattribute für diesen Elementnamen definiert, werden diese zugewiesen.
EntityReference Da die Quell- und Zieldokumente die Entitäten unterschiedlich definiert haben könnten, kopiert diese Methode nur den XmlEntityReference Knoten. Der Ersetzungstext ist nicht enthalten. Wenn das Zieldokument die Entität definiert hat, wird ihr Wert zugewiesen. Da die Quell- und Zieldokumente die Entitäten unterschiedlich definiert haben könnten, kopiert diese Methode nur den XmlEntityReference Knoten. Der Ersetzungstext ist nicht enthalten. Wenn das Zieldokument die Entität definiert hat, wird ihr Wert zugewiesen.
Verarbeitungsanweisung Kopiert den Ziel- und Datenwert aus dem importierten Knoten. Kopiert den Ziel- und Datenwert aus dem importierten Knoten.
Text Kopiert den Knoten einschließlich seiner Daten. Kopiert den Knoten einschließlich seiner Daten.
Signifikantes Leerzeichen Kopiert den Knoten einschließlich seiner Daten. Kopiert den Knoten einschließlich seiner Daten.
Leerzeichen Kopiert den Knoten einschließlich seiner Daten. Kopiert den Knoten einschließlich seiner Daten.
XML-Deklaration Kopiert den Ziel- und Datenwert aus dem importierten Knoten. Kopiert den Ziel- und Datenwert aus dem importierten Knoten.
Alle anderen Knotentypen. Diese Knotentypen können nicht importiert werden. Diese Knotentypen können nicht importiert werden.

*Obwohl DocumentType-Knoten importiert werden können, kann ein Dokument nur einen DocumentType haben. Wenn das Dokument derzeit über einen DocumentType-Knoten verfügt, muss es entfernt werden, bevor ein neues Dokument hinzugefügt wird.

Gilt für: