XmlNode.CloneNode(Boolean) 方法

定义

当在派生类中被重写时,创建该节点的副本。

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

参数

deep
Boolean

若要递归地克隆指定节点下的子树,则为 true;若仅克隆节点本身,则为 false

返回

XmlNode

克隆的节点。

例外

在不能被克隆的节点类型上调用该方法。

示例

以下示例显示了深克隆和浅克隆之间的差异。

#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

注解

此方法充当节点的复制构造函数。 重复节点没有父节点 (ParentNode 返回 null) 。

下表描述了每个 XmlNodeType对象的特定行为。

XmlNodeType CloneNode (true) CloneNode (false)
Attribute 克隆属性节点,包括子节点。 克隆属性节点,包括子节点。
CData 克隆 CData 节点,包括其数据内容。 克隆 CData 节点,包括其数据内容。
评论 克隆注释节点,包括其文本内容。 克隆注释节点,包括其文本内容。
文档 克隆文档节点,包括任何子节点。 克隆文档节点。
DocumentFragment 克隆文档片段节点,包括任何子节点。 克隆文档片段节点。
DocumentType 克隆文档类型节点。 克隆文档类型节点。
元素 克隆元素节点、其属性和任何子节点。 克隆元素节点及其属性,包括任何默认属性。
实体 无法克隆 Entity 节点。 无法克隆 Entity 节点。
EntityReference 克隆实体引用节点。 不包括替换文本。 克隆实体引用节点。 不包括替换文本。
表示法 表示法节点无法克隆。 表示法节点无法克隆。
ProcessingInstruction 克隆处理指令节点,包括其目标和数据。 克隆处理指令节点,包括其目标和数据。
SignificantWhitespace 克隆重要的空白节点,包括其数据值。 克隆重要的空白节点,包括其数据值。
文本 克隆文本节点,包括其数据值。 克隆文本节点,包括其数据值。
空格 克隆空白节点,包括其数据值。 克隆空白节点,包括其数据值。
XmlDeclaration 克隆 XmlDeclaration 节点,包括其数据值。 克隆 XmlDeclaration 节点,包括其数据值。
所有其他节点类型。 无法克隆这些节点类型。 无法克隆这些节点类型。

适用于