XmlNode.CloneNode(Boolean) Method

Definition

Crea un duplicado del nodo, cuando se invalida en una clase derivada.Creates a duplicate of the node, when overridden in a derived class.

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

Parameters

deep
Boolean

true para clonar de forma recursiva el subárbol del nodo especificado; false solo para clonar el nodo en sí.true to recursively clone the subtree under the specified node; false to clone only the node itself.

Returns

XmlNode

Nodo clonado.The cloned node.

Exceptions

Llamar a este método en un tipo de nodo que no se puede clonar.Calling this method on a node type that cannot be cloned.

Examples

En el ejemplo siguiente se muestra la diferencia entre un clon profundo y uno superficial.The following example shows the difference between a deep and shallow clone.

#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

Remarks

Este método sirve como constructor de copias para los nodos.This method serves as a copy constructor for nodes. El nodo duplicado no tiene ningún elemento primario (ParentNode devuelve null).The duplicate node has no parent (ParentNode returns null).

En la tabla siguiente se describe el comportamiento específico de cada XmlNodeType.The following table describes the specific behavior for each XmlNodeType.

XmlNodeTypeXmlNodeType CloneNode (true)CloneNode(true) CloneNode(false)CloneNode(false)
AtributoAttribute Clona el nodo de atributo, incluidos los nodos secundarios.Clones the attribute node, including child nodes. Clona el nodo de atributo, incluidos los nodos secundarios.Clones the attribute node, including child nodes.
CDataCData Clona el nodo CData, incluido su contenido de datos.Clones the CData node, including its data content. Clona el nodo CData, incluido su contenido de datos.Clones the CData node, including its data content.
ComentarioComment Clona el nodo de comentario, incluido su contenido de texto.Clones the comment node, including its text content. Clona el nodo de comentario, incluido su contenido de texto.Clones the comment node, including its text content.
DocumentoDocument Clona el nodo de documento, incluidos los nodos secundarios.Clones the document node, including any child nodes. Clona el nodo de documento.Clones the document node.
DocumentFragmentDocumentFragment Clona el nodo de fragmento de documento, incluidos los nodos secundarios.Clones the document fragment node, including any child nodes. Clona el nodo de fragmento de documento.Clones the document fragment node.
DocumentTypeDocumentType Clona el nodo de tipo de documento.Clones the document type node. Clona el nodo de tipo de documento.Clones the document type node.
ElementoElement Clona el nodo de elemento, sus atributos y los nodos secundarios.Clones the element node, its attributes, and any child nodes. Clona el nodo de elemento y sus atributos, incluidos los atributos predeterminados.Clones the element node and its attributes, including any default attributes.
EntidadEntity Los nodos de entidad no se pueden clonar.Entity nodes cannot be cloned. Los nodos de entidad no se pueden clonar.Entity nodes cannot be cloned.
EntityReferenceEntityReference Clona el nodo de referencia de entidad.Clones the entity reference node. El texto de sustitución no se incluye.The replacement text is not included. Clona el nodo de referencia de entidad.Clones the entity reference node. El texto de sustitución no se incluye.The replacement text is not included.
NotaciónNotation Los nodos Notation no se pueden clonar.Notation nodes cannot be cloned. Los nodos Notation no se pueden clonar.Notation nodes cannot be cloned.
ProcessingInstructionProcessingInstruction Clona el nodo de instrucción de procesamiento, incluidos el destino y los datos.Clones the processing instruction node, including its target and data. Clona el nodo de instrucción de procesamiento, incluidos el destino y los datos.Clones the processing instruction node, including its target and data.
SignificantWhitespaceSignificantWhitespace Clona el nodo de espacio en blanco significativo, incluido su valor de datos.Clones the significant white space node, including its data value. Clona el nodo de espacio en blanco significativo, incluido su valor de datos.Clones the significant white space node, including its data value.
TextoText Clona el nodo de texto, incluido su valor de datos.Clones the text node, including its data value. Clona el nodo de texto, incluido su valor de datos.Clones the text node, including its data value.
Espacio en blancoWhitespace Clona el nodo de espacio en blanco, incluido su valor de datos.Clones the white space node, including its data value. Clona el nodo de espacio en blanco, incluido su valor de datos.Clones the white space node, including its data value.
XmlDeclarationXmlDeclaration Clona el nodo XmlDeclaration, incluido su valor de datos.Clones the XmlDeclaration node, including its data value. Clona el nodo XmlDeclaration, incluido su valor de datos.Clones the XmlDeclaration node, including its data value.
Todos los demás tipos de nodo.All other node types. Estos tipos de nodo no se pueden clonar.These node types cannot be cloned. Estos tipos de nodo no se pueden clonar.These node types cannot be cloned.

Applies to