Поделиться через


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 клонировать только сам узел.

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

Клонированные узлы.

Исключения

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

Примеры

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

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.

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

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