XmlNode.CloneNode(Boolean) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Creates a duplicate of the node, when overridden in a derived class.
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
Parameters
- deep
- Boolean
true
to recursively clone the subtree under the specified node; false
to clone only the node itself.
Returns
The cloned node.
Exceptions
Calling this method on a node type that cannot be cloned.
Examples
The following example shows the difference between a deep and shallow clone.
#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
Remarks
This method serves as a copy constructor for nodes. The duplicate node has no parent (ParentNode returns null
).
The following table describes the specific behavior for each XmlNodeType.
XmlNodeType | CloneNode(true) | CloneNode(false) |
---|---|---|
Attribute | Clones the attribute node, including child nodes. | Clones the attribute node, including child nodes. |
CData | Clones the CData node, including its data content. | Clones the CData node, including its data content. |
Comment | Clones the comment node, including its text content. | Clones the comment node, including its text content. |
Document | Clones the document node, including any child nodes. | Clones the document node. |
DocumentFragment | Clones the document fragment node, including any child nodes. | Clones the document fragment node. |
DocumentType | Clones the document type node. | Clones the document type node. |
Element | Clones the element node, its attributes, and any child nodes. | Clones the element node and its attributes, including any default attributes. |
Entity | Entity nodes cannot be cloned. | Entity nodes cannot be cloned. |
EntityReference | Clones the entity reference node. The replacement text is not included. | Clones the entity reference node. The replacement text is not included. |
Notation | Notation nodes cannot be cloned. | Notation nodes cannot be cloned. |
ProcessingInstruction | Clones the processing instruction node, including its target and data. | Clones the processing instruction node, including its target and data. |
SignificantWhitespace | Clones the significant white space node, including its data value. | Clones the significant white space node, including its data value. |
Text | Clones the text node, including its data value. | Clones the text node, including its data value. |
Whitespace | Clones the white space node, including its data value. | Clones the white space node, including its data value. |
XmlDeclaration | Clones the XmlDeclaration node, including its data value. | Clones the XmlDeclaration node, including its data value. |
All other node types. | These node types cannot be cloned. | These node types cannot be cloned. |