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 |
---|---|
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