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 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
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. |