XmlDocument.CloneNode(Boolean) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Crea un duplicado de este nodo.
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
Parámetros
- deep
- Boolean
true
para clonar de forma recursiva el subárbol del nodo especificado; false
solo para clonar el nodo en sí.
Devoluciones
Nodo XmlDocument
clonado.
Ejemplos
En el ejemplo siguiente se muestra la diferencia entre un clon profundo y superficial.
#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
Comentarios
Este método actúa como constructor de copia para los nodos. El nodo clonado no tiene ningún elemento primario (ParentNode devuelve null
).
Si deep
es true
, el nodo clonado incluye todos los nodos secundarios; de lo contrario, solo se clona el XmlDocument
nodo. Consulte el XmlNode.CloneNode método para ver cómo se comporta este método en otros tipos de nodo.