XmlNode.CloneNode Method (Boolean)
Creates a duplicate of the node, when overridden in a derived class.
Assembly: System.Xml (in System.Xml.dll)
Parameters
- deep
-
Type:
System.Boolean
true to recursively clone the subtree under the specified node; false to clone only the node itself.
| Exception | Condition |
|---|---|
| InvalidOperationException | Calling this method on a node type that cannot be cloned. |
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. |
The following example shows the difference between a deep and shallow clone.
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); } }
Available since 10
.NET Framework
Available since 1.1