Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
CloneNode Method

XmlNode.CloneNode Method

When overridden in a derived class, creates a duplicate of the node.

Namespace: System.Xml
Assembly: System.Xml (in system.xml.dll)

public abstract XmlNode CloneNode (
	bool deep
)
public abstract XmlNode CloneNode (
	boolean deep
)
public abstract function CloneNode (
	deep : boolean
) : XmlNode
Not applicable.

Parameters

deep

true to recursively clone the subtree under the specified node; false to clone only the node itself.

Return Value

The cloned node.

Exception typeCondition

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 a null reference (Nothing in Visual Basic)).

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);
  }
}

import System.*;
import System.IO.*;
import System.Xml.*;

public class Sample
{
    public static void main(String[] args)
    {
        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.get_FirstChild();

        //Create a deep clone.  The cloned node 
        //includes the child nodes.
        XmlNode deep = root.CloneNode(true);
        Console.WriteLine(deep.get_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.get_OuterXml());
    } //main
} //Sample

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0

XNA Framework

Supported in: 1.0

Community Additions

ADD
Show:
© 2015 Microsoft