XmlNode.CloneNode(Boolean) Méthode

Définition

Crée un doublon du nœud en cas de substitution dans une classe dérivée.

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

Paramètres

deep
Boolean

true pour cloner récursivement la sous-arborescence sous le nœud spécifié ; false pour cloner seulement le nœud lui-même.

Retours

XmlNode

Nœud cloné.

Exceptions

Appel de cette méthode sur un type de nœud ne pouvant pas être cloné.

Exemples

L’exemple suivant montre la différence entre un clone profond et peu profond.

#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

Remarques

Cette méthode sert de constructeur de copie pour les nœuds. Le nœud en double n’a pas de parent (ParentNode retourne null).

Le tableau suivant décrit le comportement spécifique pour chaque XmlNodeType.

XmlNodeType CloneNode(true) CloneNode(false)
Attribut Clone le nœud d’attribut, y compris les nœuds enfants. Clone le nœud d’attribut, y compris les nœuds enfants.
CData Clone le nœud CData, y compris son contenu de données. Clone le nœud CData, y compris son contenu de données.
Commentaire Clone le nœud de commentaire, y compris son contenu texte. Clone le nœud de commentaire, y compris son contenu texte.
Document Clone le nœud de document, y compris les nœuds enfants. Clone le nœud de document.
DocumentFragment Clone le nœud de fragment de document, y compris tous les nœuds enfants. Clone le nœud de fragment de document.
DocumentType ; Clone le nœud de type de document. Clone le nœud de type de document.
Élément Clone le nœud d’élément, ses attributs et tous les nœuds enfants. Clone le nœud d’élément et ses attributs, y compris tous les attributs par défaut.
Entité Les nœuds d'entité ne peuvent pas être clonés. Les nœuds d'entité ne peuvent pas être clonés.
EntityReference Clone le nœud de référence d’entité. Le texte de remplacement n'est pas inclus. Clone le nœud de référence d’entité. Le texte de remplacement n'est pas inclus.
Notation Les nœuds de notation ne peuvent pas être clonés. Les nœuds de notation ne peuvent pas être clonés.
ProcessingInstruction ; Clone le nœud d’instruction de traitement, y compris sa cible et ses données. Clone le nœud d’instruction de traitement, y compris sa cible et ses données.
SignificantWhitespace Clone le nœud d’espace blanc significatif, y compris sa valeur de données. Clone le nœud d’espace blanc significatif, y compris sa valeur de données.
Texte Clone le nœud de texte, y compris sa valeur de données. Clone le nœud de texte, y compris sa valeur de données.
Espace blanc Clone le nœud d’espace blanc, y compris sa valeur de données. Clone le nœud d’espace blanc, y compris sa valeur de données.
XmlDeclaration Clone le nœud XmlDeclaration, y compris sa valeur de données. Clone le nœud XmlDeclaration, y compris sa valeur de données.
Tous les autres types de nœuds. Ces types de nœuds ne peuvent pas être clonés. Ces types de nœuds ne peuvent pas être clonés.

S’applique à