Freigeben über


XmlDocument.ImportNode-Methode

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

Namespace: System.Xml
Assembly: System.Xml (in system.xml.dll)

Syntax

'Declaration
Public Overridable Function ImportNode ( _
    node As XmlNode, _
    deep As Boolean _
) As XmlNode
'Usage
Dim instance As XmlDocument
Dim node As XmlNode
Dim deep As Boolean
Dim returnValue As XmlNode

returnValue = instance.ImportNode(node, deep)
public virtual XmlNode ImportNode (
    XmlNode node,
    bool deep
)
public:
virtual XmlNode^ ImportNode (
    XmlNode^ node, 
    bool deep
)
public XmlNode ImportNode (
    XmlNode node, 
    boolean deep
)
public function ImportNode (
    node : XmlNode, 
    deep : boolean
) : XmlNode

Parameter

  • node
    Der Knoten, der importiert wird.
  • deep
    true für das Erstellen eines tiefen Klons, andernfalls false.

Rückgabewert

Der importierte XmlNode.

Ausnahmen

Ausnahmetyp Bedingung

InvalidOperationException

Aufruf dieser Methode für einen Knotentyp, der nicht importiert werden kann.

Hinweise

Für den zurückgegebenen Knoten ist kein übergeordnetes Element vorhanden. Der Quellknoten wurde nicht geändert oder aus dem ursprünglichen Dokument entfernt. ImportNode erstellt eine Kopie des Quellknotens.

Beim Import eines Knotens wird ein XmlNode-Objekt erstellt, das im Besitz des importierenden Dokuments ist, wobei Name und NodeType mit dem Quellknoten identisch sind. Das neue Objekt verfügt außerdem über die Attribute, die sich auf Namespaces beziehen (Prefix, LocalName und NamespaceURI).

Je nach Knotentyp des importierten Knotens und Wert des deep-Parameters werden zusätzliche Informationen kopiert. Diese Methode versucht das Verhalten zu spiegeln, das erwartet wird, wenn ein Fragment einer XML- oder HTML-Quelle aus einem Dokument in ein anderes kopiert wurde. Die Methode berücksichtigt, dass im Fall einer XML-Quelle die beiden Dokumente unterschiedliche DTDs aufweisen können.

In der folgenden Tabelle wird das spezifische Verhalten für jeden XmlNodeType beschrieben.

XmlNodeType

ImportNode(true)

ImportNode(false)

Attribute

Die Specified-Eigenschaft wird für das generierte XmlAttribute auf true festgelegt. Die Nachkommen des Quell-XmlAttribute werden rekursiv importiert, und die resultierenden Knoten werden zur entsprechenden Teilstruktur geordnet.

Der deep-Parameter wird nicht auf XmlAttribute-Knoten angewendet. Diese werden stets zusammen mit den untergeordneten Elementen importiert.

CData

Kopiert den Knoten einschließlich der zugehörigen Daten.

Kopiert den Knoten einschließlich der zugehörigen Daten.

Comment

Kopiert den Knoten einschließlich der zugehörigen Daten.

Kopiert den Knoten einschließlich der zugehörigen Daten.

DocumentFragment

Die Nachkommen des Quellknotens werden rekursiv importiert, und die resultierenden Knoten werden zur entsprechenden Teilstruktur geordnet.

Ein leeres XmlDocumentFragment wird generiert.

DocumentType

Kopiert den Knoten einschließlich der zugehörigen Daten.*

Kopiert den Knoten einschließlich der zugehörigen Daten.*

Element

Die Nachkommen des Quellelements und des angegebenen Attributknotens werden rekursiv importiert. Die resultierenden Knoten werden zur entsprechenden Teilstruktur geordnet.

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 XmlAttribute-Knoten werden an das generierte XmlElement 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 Entitäten des Quell- und Zieldokuments unterschiedlich definiert sein können, kopiert diese Methode lediglich den XmlEntityReference-Knoten. Der Ersetzungstext ist davon nicht betroffen. Wenn die Entität des Zieldokuments definiert ist, wird deren Wert zugewiesen.

Da die Entitäten des Quell- und Zieldokuments unterschiedlich definiert sein können, kopiert diese Methode lediglich den XmlEntityReference-Knoten. Der Ersetzungstext ist davon nicht betroffen. Wenn die Entität des Zieldokuments definiert ist, wird deren Wert zugewiesen.

ProcessingInstruction

Kopiert den Ziel- und Datenwert des importierten Knotens.

Kopiert den Ziel- und Datenwert des importierten Knotens.

Text

Kopiert den Knoten einschließlich der zugehörigen Daten.

Kopiert den Knoten einschließlich der zugehörigen Daten.

SignificantWhitespace

Kopiert den Knoten einschließlich der zugehörigen Daten.

Kopiert den Knoten einschließlich der zugehörigen Daten.

Whitespace

Kopiert den Knoten einschließlich der zugehörigen Daten.

Kopiert den Knoten einschließlich der zugehörigen Daten.

XmlDeclaration

Kopiert den Ziel- und Datenwert des importierten Knotens.

Kopiert den Ziel- und Datenwert des importierten Knotens.

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 aufweisen. Wenn das Dokument gegenwärtig über einen DocumentType-Knoten verfügt, muss dieser vor dem Hinzufügen eines neuen entfernt werden.

Beispiel

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

Option Explicit
Option Strict

Imports System
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 'Main 
End Class 'Sample
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);

  }
}
#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 );
}
import System.*;
import System.IO.*;
import System.Xml.*;

public class Sample
{
    public static void main(String[] args)
    {
        //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.get_DocumentElement().get_LastChild(), true);
        doc.get_DocumentElement().AppendChild(newBook);

        Console.WriteLine("Display the modified XML...");
        doc.Save(Console.get_Out());
    } //main
} //Sample

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

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

XmlDocument-Klasse
XmlDocument-Member
System.Xml-Namespace