XmlNode.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 del nodo, cuando se reemplaza 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 bajo el nodo especificado; false para clonar solo el propio nodo.
Devoluciones
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;
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 sirve 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.
| XmlNodeType | 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 del documento. |
| DocumentFragment | Clona el nodo de fragmento de documento, incluidos los nodos secundarios. | Clona el nodo de fragmento de documento. |
| Tipo de Documento | 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. No se incluye el texto de reemplazo. | Clona el nodo de referencia de entidad. No se incluye el texto de reemplazo. |
| Notación | No se pueden clonar los nodos de notación. | No se pueden clonar los nodos de notación. |
| Instrucción de Procesamiento | Clona el nodo de instrucciones de procesamiento, incluido su destino y sus datos. | Clona el nodo de instrucciones de procesamiento, incluido 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. |
| Text | 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. |
| Declaración XML | 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. |