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, включая его значение данных. |
| Все остальные типы узлов. | Эти типы узлов нельзя клонировать. | Эти типы узлов нельзя клонировать. |