XmlNode.CloneNode(Boolean) Метод

Определение

Когда переопределено в производном классе, создает дубликат узла.

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

Параметры

deep
Boolean

Значение true для рекурсивного клонирования поддерева указанного узла; значение false для клонирования только самого узла.

Возвращаемое значение

XmlNode

Точная копия узла.

Исключения

Вызов этого метода для типа узла, для которого не может быть создана точная копия.

Примеры

В следующем примере показано различие между глубоким и неглубоким клоном.

#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

Комментарии

Этот метод служит конструктором копирования для узлов. Повторяющийся узел не имеет родительского (ParentNodeвозвращает).null

В следующей таблице описано конкретное поведение для каждого.XmlNodeType

Тип узла XML CloneNode(true) CloneNode(false)
Атрибут Клонирует узел атрибута, включая дочерние узлы. Клонирует узел атрибута, включая дочерние узлы.
CData Клонирует узел CData, включая его содержимое данных. Клонирует узел CData, включая его содержимое данных.
Добавление примечаний Клонирует узел комментариев, включая его текстовое содержимое. Клонирует узел комментариев, включая его текстовое содержимое.
Document Клонирует узел документа, включая все дочерние узлы. Клонирует узел документа.
DocumentFragment Клонирует узел фрагмента документа, включая все дочерние узлы. Клонирует узел фрагмента документа.
DocumentType; Клонирует узел типа документа. Клонирует узел типа документа.
Элемент Клонирует узел элемента, его атрибуты и все дочерние узлы. Клонирует узел элемента и его атрибуты, включая любые атрибуты по умолчанию.
Объект Невозможно получить точные копии узлов сущности. Невозможно получить точные копии узлов сущности.
EntityReference Клонирует узел ссылки на сущность. Текст замены не включается. Клонирует узел ссылки на сущность. Текст замены не включается.
Notation Невозможно создать точную копию узлов представлений. Невозможно создать точную копию узлов представлений.
ProcessingInstruction; Клонирует узел инструкций по обработке, включая его целевой объект и данные. Клонирует узел инструкций по обработке, включая его целевой объект и данные.
SignificantWhitespace Клонирует значительный узел пробела, включая его значение данных. Клонирует значительный узел пробела, включая его значение данных.
Text Клонирует текстовый узел, включая его значение данных. Клонирует текстовый узел, включая его значение данных.
Whitespace Клонирует узел пробела, включая его значение данных. Клонирует узел пробела, включая его значение данных.
XmlDeclaration Клонирует узел XmlDeclaration, включая его значение данных. Клонирует узел XmlDeclaration, включая его значение данных.
Все остальные типы узлов. Эти типы узлов нельзя клонировать. Эти типы узлов нельзя клонировать.

Применяется к