XmlNode.CloneNode(Boolean) Método

Definição

Cria uma duplicata do nó quando substituído em uma classe derivada.

public abstract System.Xml.XmlNode CloneNode (bool deep);

Parâmetros

deep
Boolean

true para recursivamente clonar a subárvore abaixo do nó especificado; false para clonar apenas o próprio nó.

Retornos

XmlNode

O nó clonado.

Exceções

Chamando esse método em um tipo de nó que não pode ser clonado.

Exemplos

O exemplo a seguir mostra a diferença entre um clone profundo e raso.

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);
  }
}

Comentários

Esse método serve como um construtor de cópia para nós. O nó duplicado não tem pai (ParentNode retorna null).

A tabela a seguir descreve o comportamento específico para cada XmlNodeType.

XmlNodeType CloneNode(true) CloneNode(false)
Atributo Clona o nó de atributo, incluindo nós filho. Clona o nó de atributo, incluindo nós filho.
CDATA Clona o nó CData, incluindo seu conteúdo de dados. Clona o nó CData, incluindo seu conteúdo de dados.
Comentário Clona o nó de comentário, incluindo seu conteúdo de texto. Clona o nó de comentário, incluindo seu conteúdo de texto.
Documento Clona o nó do documento, incluindo quaisquer nós filho. Clona o nó do documento.
DocumentFragment Clona o nó de fragmento do documento, incluindo quaisquer nós filho. Clona o nó de fragmento do documento.
DocumentType Clona o nó de tipo de documento. Clona o nó de tipo de documento.
Elemento Clona o nó de elemento, seus atributos e quaisquer nós filho. Clona o nó de elemento e seus atributos, incluindo todos os atributos padrão.
Entidade Não é possível clonar nós de entidade. Não é possível clonar nós de entidade.
EntityReference Clona o nó de referência da entidade. O texto de substituição não é incluído. Clona o nó de referência da entidade. O texto de substituição não é incluído.
Notation Não é possível clonar nós de notação. Não é possível clonar nós de notação.
ProcessingInstruction Clona o nó de instrução de processamento, incluindo seu destino e dados. Clona o nó de instrução de processamento, incluindo seu destino e dados.
SignificantWhitespace Clona o nó de espaço em branco significativo, incluindo seu valor de dados. Clona o nó de espaço em branco significativo, incluindo seu valor de dados.
Texto Clona o nó de texto, incluindo seu valor de dados. Clona o nó de texto, incluindo seu valor de dados.
Espaço em branco Clona o nó de espaço em branco, incluindo seu valor de dados. Clona o nó de espaço em branco, incluindo seu valor de dados.
XmlDeclaration Clona o nó XmlDeclaration, incluindo seu valor de dados. Clona o nó XmlDeclaration, incluindo seu valor de dados.
Todos os outros tipos de nó. Esses tipos de nó não podem ser clonados. Esses tipos de nó não podem ser clonados.

Aplica-se a