Compartir vía


XmlNode.CloneNode(Boolean) Método

Definición

Crea un duplicado del nodo, cuando se invalida en una clase derivada.

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

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

XmlNode

Nodo clonado.

Excepciones

Llamar a este método en un tipo de nodo que no se puede clonar.

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()
{
   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

Comentarios

Este método actúa como constructor de copia para los nodos. El nodo duplicado no tiene ningún elemento primario (ParentNode devuelve null).

En la tabla siguiente se describe el comportamiento específico de cada XmlNodeType.

Tipo XmlNode CloneNode(true) CloneNode(false)
Atributo Clona el nodo de atributo, incluidos los nodos secundarios. Clona el nodo de atributo, incluidos los nodos secundarios.
CData Clona el nodo CData, incluido su contenido de datos. Clona el nodo CData, incluido su contenido de datos.
Comentario Clona el nodo de comentario, incluido su contenido de texto. Clona el nodo de comentario, incluido su contenido de texto.
Documento Clona el nodo de documento, incluidos los nodos secundarios. Clona el nodo de documento.
DocumentFragment Clona el nodo de fragmento de documento, incluidos los nodos secundarios. Clona el nodo de fragmento de documento.
DocumentType Clona el nodo de tipo de documento. Clona el nodo de tipo de documento.
Elemento Clona el nodo de elemento, sus atributos y cualquier nodo secundario. Clona el nodo de elemento y sus atributos, incluidos los atributos predeterminados.
Entidad Los nodos de entidad no se pueden clonar. Los nodos de entidad no se pueden clonar.
EntityReference Clona el nodo de referencia de entidad. El texto de sustitución no se incluye. Clona el nodo de referencia de entidad. El texto de sustitución no se incluye.
Notación Los nodos Notation no se pueden clonar. Los nodos Notation no se pueden clonar.
ProcessingInstruction Clona el nodo de instrucción de procesamiento, incluidos su destino y sus datos. Clona el nodo de instrucción de procesamiento, incluidos su destino y sus datos.
SignificantWhitespace Clona el nodo de espacio en blanco significativo, incluido su valor de datos. Clona el nodo de espacio en blanco significativo, incluido su valor de datos.
Texto Clona el nodo de texto, incluido su valor de datos. Clona el nodo de texto, incluido su valor de datos.
Espacio en blanco Clona el nodo de espacio en blanco, incluido su valor de datos. Clona el nodo de espacio en blanco, incluido su valor de datos.
XmlDeclaration Clona el nodo XmlDeclaration, incluido su valor de datos. Clona el nodo XmlDeclaration, incluido su valor de datos.
Todos los demás tipos de nodo. Estos tipos de nodo no se pueden clonar. Estos tipos de nodo no se pueden clonar.

Se aplica a