XmlDocument.ImportNode(XmlNode, Boolean) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 Knoten, der importiert wird.
- deep
- Boolean
true
für das Erstellen eines tiefen Klons, andernfalls false
.
Gibt zurück
Der importierte XmlNode.
Ausnahmen
Aufrufen dieser Methode für einen Knotentyp, der nicht importiert werden kann.
Beispiele
Im folgenden Beispiel wird ein Buchknoten aus einem zweiten XML-Dokument in das ursprüngliche XML-Dokument importiert.
#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 als books.xml
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>
Hinweise
Der zurückgegebene Knoten hat kein übergeordnetes Element. Der Quellknoten wird nicht geändert oder aus dem ursprünglichen Dokument entfernt; ImportNode
erstellt eine Kopie des Quellknotens.
Beim Importieren eines Knotens wird ein XmlNode
Objekt erstellt, das dem Importdokument gehört, mit Name und NodeType identisch mit dem Quellknoten. 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 verhalten zu spiegeln, das erwartet wird, wenn ein Fragment von XML- oder HTML-Quelle aus einem Dokument in ein anderes kopiert wurde (erkennt, dass die beiden Dokumente im XML-Fall unterschiedliche DTDs haben könnten).
In der folgenden Tabelle werden die spezifischen Verhaltensweisen für jeden XmlNodeTypebeschrieben.
XmlNodeType | ImportNode(true) | ImportNode(false) |
---|---|---|
attribute | Die Specified Eigenschaft wird true auf die generierte XmlAttribute. Die Nachkommen der Quelle XmlAttribute werden rekursiv importiert und die resultierenden Knoten neu zusammengefügt, um die entsprechende Unterstruktur zu bilden. |
Der deep Parameter gilt nicht für XmlAttribute Knoten. Sie tragen ihre untergeordneten Elemente immer mit ihnen, wenn sie importiert werden. |
CData | Kopiert den Knoten einschließlich der zugehörigen Daten. | Kopiert den Knoten einschließlich der zugehörigen Daten. |
Kommentar | Kopiert den Knoten einschließlich der zugehörigen Daten. | Kopiert den Knoten einschließlich der zugehörigen Daten. |
DocumentFragment | Die untergeordneten Elemente des Quellknotens werden rekursiv importiert. Die daraus resultierenden Knoten werden neu assembliert und bilden die entsprechende Teilstruktur. | Eine Leere XmlDocumentFragment wird generiert. |
DocumentType | Kopiert den Knoten einschließlich der zugehörigen Daten.* | Kopiert den Knoten einschließlich der zugehörigen Daten.* |
Element | Die Untergeordneten 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 XmlAttribute Knoten werden an die generierten Knoten XmlElementangefü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 anders definiert haben könnten, kopiert diese Methode nur den XmlEntityReference Knoten. Der Ersetzungstext ist davon nicht betroffen. Wenn die Entität des Zieldokuments definiert ist, wird deren Wert zugewiesen. | Da die Quell- und Zieldokumente die Entitäten anders definiert haben könnten, kopiert diese Methode nur 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. |
Leerraum | 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 über einen DocumentType verfügen. Wenn das Dokument derzeit über einen DocumentType-Knoten verfügt, muss es entfernt werden, bevor ein neues Dokument hinzugefügt wird.