XmlNode::CloneNode Method
When overridden in a derived class, creates a duplicate of the node.
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 nullptr).
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.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 ); }
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.