XmlDocument.CloneNode(Boolean) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает дубликат этого узла.
public:
override System::Xml::XmlNode ^ CloneNode(bool deep);
public override System.Xml.XmlNode CloneNode (bool deep);
override this.CloneNode : bool -> System.Xml.XmlNode
Public Overrides Function CloneNode (deep As Boolean) As XmlNode
Параметры
- deep
- Boolean
Значение true для рекурсивного клонирования поддерева указанного узла; значение false для клонирования только самого узла.
Возвращаемое значение
Клонированный узел XmlDocument.
Примеры
В следующем примере показано различие между глубоким и неглубоким клоном.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
//Create the XmlDocument.
XmlDocument^ doc = gcnew XmlDocument;
doc->LoadXml( "<book genre='novel' ISBN='1-861001-57-5'><title>Pride And Prejudice</title></book>" );
//Create a deep clone. The cloned node
//includes the child node.
XmlDocument^ deep = dynamic_cast<XmlDocument^>(doc->CloneNode( true ));
Console::WriteLine( deep->ChildNodes->Count );
//Create a shallow clone. The cloned node does not
//include the child node.
XmlDocument^ shallow = dynamic_cast<XmlDocument^>(doc->CloneNode( false ));
Console::WriteLine( "{0}{1}", shallow->Name, shallow->OuterXml );
Console::WriteLine( shallow->ChildNodes->Count );
}
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
//Create the XmlDocument.
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</book>");
//Create a deep clone. The cloned node
//includes the child node.
XmlDocument deep = (XmlDocument) doc.CloneNode(true);
Console.WriteLine(deep.ChildNodes.Count);
//Create a shallow clone. The cloned node does not
//include the child node.
XmlDocument shallow = (XmlDocument) doc.CloneNode(false);
Console.WriteLine(shallow.Name + shallow.OuterXml);
Console.WriteLine(shallow.ChildNodes.Count);
}
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
'Create the XmlDocument.
Dim doc As New XmlDocument()
doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"</book>")
'Create a deep clone. The cloned node
'includes the child node.
Dim deep As XmlDocument = CType(doc.CloneNode(True), XmlDocument)
Console.WriteLine(deep.ChildNodes.Count)
'Create a shallow clone. The cloned node does not
'include the child node.
Dim shallow As XmlDocument = CType(doc.CloneNode(False), XmlDocument)
Console.WriteLine(shallow.Name + shallow.OuterXml)
Console.WriteLine(shallow.ChildNodes.Count)
End Sub
End Class
Комментарии
Этот метод служит конструктором копирования для узлов. Клонированные узлы не имеют родительского (ParentNode возвращается null).
Если deep это так true, клонированные узлы включают все дочерние узлы, в противном случае клонируется только XmlDocument узел. Ознакомьтесь с методом XmlNode.CloneNode , чтобы узнать, как работает этот метод в других типах узлов.