XmlNode.CloneNode(Boolean) Metoda

Definicja

Tworzy duplikat węzła podczas zastępowania w klasie pochodnej.

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 aby rekursywnie sklonować poddrzewo pod określonym węzłem; false aby sklonować tylko sam węzeł.

Zwraca

XmlNode

Sklonowany węzeł.

Wyjątki

Wywoływanie tej metody w typie węzła, którego nie można sklonować.

Przykłady

W poniższym przykładzie pokazano różnicę między głębokim i płytkim 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

Uwagi

Ta metoda służy jako konstruktor kopiowania dla węzłów. Zduplikowany węzeł nie ma elementu nadrzędnego (ParentNode zwraca nullwartość ).

W poniższej tabeli opisano konkretne zachowanie dla każdego XmlNodeTypeelementu .

XmlNodeType CloneNode(true) CloneNode(false)
Atrybut Klonuje węzeł atrybutu, w tym węzły podrzędne. Klonuje węzeł atrybutu, w tym węzły podrzędne.
Cdata Klonuje węzeł CData, w tym jego zawartość danych. Klonuje węzeł CData, w tym jego zawartość danych.
Komentarz Klonuje węzeł komentarza, w tym jego zawartość tekstową. Klonuje węzeł komentarza, w tym jego zawartość tekstową.
Dokument Klonuje węzeł dokumentu, w tym wszystkie węzły podrzędne. Klonuje węzeł dokumentu.
Documentfragment Klonuje węzeł fragmentu dokumentu, w tym wszystkie węzły podrzędne. Klonuje węzeł fragmentu dokumentu.
Documenttype Klonuje węzeł typu dokumentu. Klonuje węzeł typu dokumentu.
Element Klonuje węzeł elementu, jego atrybuty i wszystkie węzły podrzędne. Klonuje węzeł elementu i jego atrybuty, w tym wszelkie atrybuty domyślne.
Jednostka Nie można sklonować węzłów jednostki. Nie można sklonować węzłów jednostki.
Odwołanie do jednostki Klonuje węzeł odwołania do jednostki. Tekst zastępczy nie jest uwzględniony. Klonuje węzeł odwołania do jednostki. Tekst zastępczy nie jest uwzględniony.
Notacja Nie można sklonować węzłów notacji. Nie można sklonować węzłów notacji.
ProcessingInstruction Klonuje węzeł instrukcji przetwarzania, w tym jego element docelowy i dane. Klonuje węzeł instrukcji przetwarzania, w tym jego element docelowy i dane.
ZnacząceWhitespace Klonuje znaczący węzeł odstępu, w tym jego wartość danych. Klonuje znaczący węzeł odstępu, w tym jego wartość danych.
Tekst Klonuje węzeł tekstowy, w tym jego wartość danych. Klonuje węzeł tekstowy, w tym jego wartość danych.
Białe znaki Klonuje węzeł odstępu, w tym jego wartość danych. Klonuje węzeł odstępu, w tym jego wartość danych.
Xmldeclaration Klonuje węzeł XmlDeclaration, w tym jego wartość danych. Klonuje węzeł XmlDeclaration, w tym jego wartość danych.
Wszystkie inne typy węzłów. Nie można sklonować tych typów węzłów. Nie można sklonować tych typów węzłów.

Dotyczy