Freigeben über


XmlNode.CloneNode(Boolean) Methode

Definition

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

XmlNode

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.

Gilt für