XmlNode.CloneNode(Boolean) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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. |