XmlNode.CloneNode(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.
Erstellt beim Überschreiben in einer abgeleiteten Klasse ein Duplikat des Knotens.
public:
abstract System::Xml::XmlNode ^ CloneNode(bool deep);
public abstract System.Xml.XmlNode CloneNode (bool deep);
abstract member CloneNode : bool -> System.Xml.XmlNode
Public MustOverride Function CloneNode (deep As Boolean) As XmlNode
Parameter
- deep
- Boolean
true
, wenn die Teilstruktur unter dem angegebenen Knoten rekursiv geklont werden soll, false
, wenn nur der Knoten selbst geklont werden soll.
Gibt zurück
Der geklonte Knoten.
Ausnahmen
Aufruf dieser Methode für einen Knotentyp, der nicht geklont werden kann.
Beispiele
Das folgende Beispiel zeigt den Unterschied zwischen einem tiefen und flachen Klon.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
XmlDocument^ doc = gcnew XmlDocument;
doc->LoadXml( "<book ISBN='1-861001-57-5'>"
"<title>Pride And Prejudice</title>"
"<price>19.95</price>"
"</book>" );
XmlNode^ root = doc->FirstChild;
//Create a deep clone. The cloned node
//includes the child nodes.
XmlNode^ deep = root->CloneNode( true );
Console::WriteLine( deep->OuterXml );
//Create a shallow clone. The cloned node does not
//include the child nodes, but does include its attribute.
XmlNode^ shallow = root->CloneNode( false );
Console::WriteLine( shallow->OuterXml );
}
using System;
using System.IO;
using System.Xml;
public class Sample {
public static void Main() {
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"<price>19.95</price>" +
"</book>");
XmlNode root = doc.FirstChild;
//Create a deep clone. The cloned node
//includes the child nodes.
XmlNode deep = root.CloneNode(true);
Console.WriteLine(deep.OuterXml);
//Create a shallow clone. The cloned node does not
//include the child nodes, but does include its attribute.
XmlNode shallow = root.CloneNode(false);
Console.WriteLine(shallow.OuterXml);
}
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<book ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"<price>19.95</price>" & _
"</book>")
Dim root As XmlNode = doc.FirstChild
'Create a deep clone. The cloned node
'includes the child nodes.
Dim deep As XmlNode = root.CloneNode(True)
Console.WriteLine(deep.OuterXml)
'Create a shallow clone. The cloned node does not
'include the child nodes, but does include its attribute.
Dim shallow As XmlNode = root.CloneNode(False)
Console.WriteLine(shallow.OuterXml)
End Sub
End Class
Hinweise
Diese Methode dient als Kopierkonstruktor für Knoten. Der doppelte Knoten hat kein übergeordnetes Element (ParentNode gibt zurück null
).
In der folgenden Tabelle werden die spezifischen Verhaltensweisen für jeden XmlNodeTypebeschrieben.
XmlNodeType | CloneNode(true) | CloneNode(false) |
---|---|---|
attribute | Klont den Attributknoten, einschließlich untergeordneter Knoten. | Klont den Attributknoten, einschließlich untergeordneter Knoten. |
CData | Klont den CData-Knoten, einschließlich seiner Dateninhalte. | Klont den CData-Knoten, einschließlich seiner Dateninhalte. |
Kommentar | Klont den Kommentarknoten, einschließlich des Textinhalts. | Klont den Kommentarknoten, einschließlich des Textinhalts. |
Dokument | Klont den Dokumentknoten, einschließlich untergeordneter Knoten. | Klont den Dokumentknoten. |
DocumentFragment | Klont den Dokumentfragmentknoten, einschließlich untergeordneter Knoten. | Klont den Dokumentfragmentknoten. |
DocumentType | Klont den Dokumenttypknoten. | Klont den Dokumenttypknoten. |
Element | Klont den Elementknoten, seine Attribute und alle untergeordneten Knoten. | Klont den Elementknoten und seine Attribute, einschließlich aller Standardattribute. |
Entität | Entitätsknoten können nicht geklont werden. | Entitätsknoten können nicht geklont werden. |
EntityReference | Klont den Entitätsverweisknoten. Der Ersetzungstext ist davon nicht betroffen. | Klont den Entitätsverweisknoten. Der Ersetzungstext ist davon nicht betroffen. |
Notation | Notationsknoten können nicht geklont werden. | Notationsknoten können nicht geklont werden. |
ProcessingInstruction | Klont den Verarbeitungsanweisungsknoten, einschließlich seiner Ziel- und Daten. | Klont den Verarbeitungsanweisungsknoten, einschließlich seiner Ziel- und Daten. |
SignificantWhitespace | Klont den signifikanten Leerraumknoten, einschließlich des Datenwerts. | Klont den signifikanten Leerraumknoten, einschließlich des Datenwerts. |
Text | Klont den Textknoten, einschließlich des Datenwerts. | Klont den Textknoten, einschließlich des Datenwerts. |
Leerraum | Klont den Leerraumknoten, einschließlich des Datenwerts. | Klont den Leerraumknoten, einschließlich des Datenwerts. |
XmlDeclaration | Klont den XmlDeclaration-Knoten, einschließlich des Datenwerts. | Klont den XmlDeclaration-Knoten, einschließlich des Datenwerts. |
Alle anderen Knotentypen. | Diese Knotentypen können nicht geklont werden. | Diese Knotentypen können nicht geklont werden. |