Freigeben über


XmlNode.CloneNode-Methode

Erstellt beim Überschreiben in einer abgeleiteten Klasse ein Duplikat des Knotens.

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

Syntax

'Declaration
Public MustOverride Function CloneNode ( _
    deep As Boolean _
) As XmlNode
'Usage
Dim instance As XmlNode
Dim deep As Boolean
Dim returnValue As XmlNode

returnValue = instance.CloneNode(deep)
public abstract XmlNode CloneNode (
    bool deep
)
public:
virtual XmlNode^ CloneNode (
    bool deep
) abstract
public abstract XmlNode CloneNode (
    boolean deep
)
public abstract function CloneNode (
    deep : boolean
) : XmlNode

Parameter

  • deep
    true, wenn die Teilstruktur unter dem angegebenen Knoten rekursiv geklont werden soll, false, wenn nur der Knoten selbst geklont werden soll.

Rückgabewert

Der geklonte Knoten.

Ausnahmen

Ausnahmetyp Bedingung

InvalidOperationException

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

Hinweise

Diese Methode wird als Kopierkonstruktor für Knoten verwendet. Für das Knotenduplikat ist kein übergeordnetes Element vorhanden (ParentNode gibt NULL (Nothing in Visual Basic) zurück).

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

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 dessen Dateninhalts.

Klont den CData-Knoten einschließlich dessen Dateninhalts.

Comment

Klont den Kommentarknoten einschließlich dessen Textinhalts.

Klont den Kommentarknoten einschließlich dessen Textinhalts.

Document

Klont den Dokumentknoten einschließlich sämtlicher untergeordneter Knoten.

Klont den Dokumentknoten.

DocumentFragment

Klont den Dokumentfragmentknoten einschließlich sämtlicher untergeordneter Knoten.

Klont den Dokumentfragmentknoten.

DocumentType

Klont den Dokumenttypknoten.

Klont den Dokumenttypknoten.

Element

Klont den Elementknoten, dessen Attribute und sämtliche untergeordneten Knoten.

Klont den Elementknoten und dessen Attribute einschließlich sämtlicher Standardattribute.

Entity

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 Ziel und Daten.

Klont den Verarbeitungsanweisungsknoten, einschließlich Ziel und Daten.

SignificantWhitespace

Klont den Knoten für signifikanten Leerraum, einschließlich dessen Dateninhalts.

Klont den Knoten für signifikanten Leerraum, einschließlich dessen Dateninhalts.

Text

Klont den Textknoten einschließlich des zugehörigen Datenwerts.

Klont den Textknoten einschließlich des zugehörigen Datenwerts.

Whitespace

Klont den Leerraumknoten einschließlich dessen Dateninhalts.

Klont den Leerraumknoten einschließlich dessen Dateninhalts.

XmlDeclaration

Klont den Knoten für die XML-Deklaration einschließlich des zugehörigen Datenwerts.

Klont den Knoten für die XML-Deklaration einschließlich des zugehörigen Datenwerts.

Alle anderen Knotentypen.

Diese Knotentypen können nicht geklont werden.

Diese Knotentypen können nicht geklont werden.

Beispiel

Im folgenden Beispiel wird der Unterschied zwischen einem tiefen und einem flachen Klon veranschaulicht.

Option Explicit
Option Strict

Imports System
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 'Main
End Class 'Sample
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);
  }
}
#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 );
}
import System.*;
import System.IO.*;
import System.Xml.*;

public class Sample
{
    public static void main(String[] args)
    {
        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.get_FirstChild();

        //Create a deep clone.  The cloned node 
        //includes the child nodes.
        XmlNode deep = root.CloneNode(true);
        Console.WriteLine(deep.get_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.get_OuterXml());
    } //main
} //Sample

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

XmlNode-Klasse
XmlNode-Member
System.Xml-Namespace