XmlNode.CloneNode(Boolean) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
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. |