XmlNode.CloneNode(Boolean) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当在派生类中被重写时,创建该节点的副本。
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
。
返回
克隆的节点。
例外
在不能被克隆的节点类型上调用该方法。
示例
以下示例显示了深克隆和浅克隆之间的差异。
#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 节点,包括其数据值。 |
所有其他节点类型。 | 无法克隆这些节点类型。 | 无法克隆这些节点类型。 |