Sdílet prostřednictvím


XmlNode.CloneNode(Boolean) Metoda

Definice

Vytvoří duplikát uzlu při přepsání v odvozené třídě.

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

Parametry

deep
Boolean

true rekurzivně klonovat podstrom pod zadaným uzlem; false klonování pouze samotného uzlu.

Návraty

XmlNode

Klonovaný uzel.

Výjimky

Volání této metody na typ uzlu, který nelze naklonovat.

Příklady

Následující příklad ukazuje rozdíl mezi hlubokým a mělkým klonem.

#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

Poznámky

Tato metoda slouží jako konstruktor kopírování pro uzly. Duplicitní uzel nemá žádný nadřazený uzel (ParentNode vrátí null).

Následující tabulka popisuje konkrétní chování jednotlivých XmlNodeType.

Xmlnodetype CloneNode(true) CloneNode(false)
Atribut Naklonuje uzel atributu, včetně podřízených uzlů. Naklonuje uzel atributu, včetně podřízených uzlů.
Cdata Naklonuje uzel CData, včetně jeho datového obsahu. Naklonuje uzel CData, včetně jeho datového obsahu.
Komentář Naklonuje uzel komentáře, včetně jeho textového obsahu. Naklonuje uzel komentáře, včetně jeho textového obsahu.
Dokument Naklonuje uzel dokumentu, včetně všech podřízených uzlů. Naklonuje uzel dokumentu.
Documentfragment Naklonuje uzel fragmentu dokumentu, včetně všech podřízených uzlů. Naklonuje uzel fragmentu dokumentu.
Documenttype Naklonuje uzel typu dokumentu. Naklonuje uzel typu dokumentu.
Prvek Naklonuje uzel elementu, jeho atributy a všechny podřízené uzly. Naklonuje uzel elementu a jeho atributy, včetně všech výchozích atributů.
Entita Uzly entit nelze naklonovat. Uzly entit nelze naklonovat.
EntityReference Naklonuje referenční uzel entity. Náhradní text není zahrnut. Naklonuje referenční uzel entity. Náhradní text není zahrnut.
Notace Notační uzly nelze naklonovat. Notační uzly nelze naklonovat.
Processinginstruction Naklonuje uzel instrukce zpracování, včetně cíle a dat. Naklonuje uzel instrukce zpracování, včetně cíle a dat.
SignificantWhitespace Naklonuje významný prázdný uzel, včetně jeho datové hodnoty. Naklonuje významný prázdný uzel, včetně jeho datové hodnoty.
Text Naklonuje textový uzel, včetně jeho datové hodnoty. Naklonuje textový uzel, včetně jeho datové hodnoty.
Prázdné znaky Naklonuje uzel prázdného místa, včetně jeho datové hodnoty. Naklonuje uzel prázdného místa, včetně jeho datové hodnoty.
Xmldeclaration Naklonuje uzel XmlDeclaration, včetně jeho datové hodnoty. Naklonuje uzel XmlDeclaration, včetně jeho datové hodnoty.
Všechny ostatní typy uzlů. Tyto typy uzlů nelze naklonovat. Tyto typy uzlů nelze naklonovat.

Platí pro