XmlNode.CloneNode(Boolean) Metodo

Definizione

Quando viene eseguito l'override in una classe derivata, crea un duplicato del nodo.

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

Parametri

deep
Boolean

true per clonare in modo ricorsivo il sottoalbero del nodo specificato; false per clonare solo il nodo.

Restituisce

XmlNode

Nodo clonato.

Eccezioni

Viene effettuata una chiamata al metodo su un tipo di nodo che non può essere duplicato.

Esempio

L'esempio seguente mostra la differenza tra un clone profondo e superficiale.

#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

Commenti

Questo metodo funge da costruttore di copia per i nodi. Il nodo duplicato non ha un elemento padre (ParentNode restituisce null).

Nella tabella seguente viene descritto il comportamento specifico per ogni XmlNodeTypeoggetto .

XmlNodeType CloneNode(true) CloneNode(false)
Attributo Clona il nodo dell'attributo, inclusi i nodi figlio. Clona il nodo dell'attributo, inclusi i nodi figlio.
Cdata Clona il nodo CData, incluso il contenuto dei dati. Clona il nodo CData, incluso il contenuto dei dati.
Commento Clona il nodo di commento, incluso il relativo contenuto di testo. Clona il nodo di commento, incluso il relativo contenuto di testo.
Documento Clona il nodo del documento, inclusi tutti i nodi figlio. Clona il nodo documento.
DocumentFragment Clona il nodo del frammento di documento, inclusi tutti i nodi figlio. Clona il nodo del frammento di documento.
DocumentType Clona il nodo del tipo di documento. Clona il nodo del tipo di documento.
Elemento Clona il nodo dell'elemento, i relativi attributi e tutti i nodi figlio. Clona il nodo elemento e i relativi attributi, inclusi gli attributi predefiniti.
Entità I nodi entità non possono essere duplicati. I nodi entità non possono essere duplicati.
EntityReference Clona il nodo di riferimento dell'entità. Il testo di sostituzione non viene incluso. Clona il nodo di riferimento dell'entità. Il testo di sostituzione non viene incluso.
Notation I nodi di notazione non possono essere duplicati. I nodi di notazione non possono essere duplicati.
ProcessingInstruction Clona il nodo dell'istruzione di elaborazione, inclusi i dati e la destinazione. Clona il nodo dell'istruzione di elaborazione, inclusi i dati e la destinazione.
SignificantWhitespace Clona il nodo dello spazio vuoto significativo, incluso il relativo valore di dati. Clona il nodo dello spazio vuoto significativo, incluso il relativo valore di dati.
Testo Clona il nodo di testo, incluso il relativo valore di dati. Clona il nodo di testo, incluso il relativo valore di dati.
Spazio vuoto Clona il nodo dello spazio vuoto, incluso il relativo valore di dati. Clona il nodo dello spazio vuoto, incluso il relativo valore di dati.
XmlDeclaration Clona il nodo XmlDeclaration, incluso il relativo valore di dati. Clona il nodo XmlDeclaration, incluso il relativo valore di dati.
Tutti gli altri tipi di nodo. Questi tipi di nodo non possono essere clonati. Questi tipi di nodo non possono essere clonati.

Si applica a