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) |
---|---|---|
屬性 | 複製屬性節點,包括子節點。 | 複製屬性節點,包括子節點。 |
CData | 複製 CData 節點,包括其資料內容。 | 複製 CData 節點,包括其資料內容。 |
註解 | 複製批註節點,包括其文字內容。 | 複製批註節點,包括其文字內容。 |
文件 | 複製檔節點,包括任何子節點。 | 複製檔節點。 |
DocumentFragment | 複製檔片段節點,包括任何子節點。 | 複製檔片段節點。 |
DocumentType | 複製檔案類型節點。 | 複製檔案類型節點。 |
項目 | 複製專案節點、其屬性和任何子節點。 | 複製專案節點及其屬性,包括任何預設屬性。 |
單位 | 無法複製 Entity 節點。 | 無法複製 Entity 節點。 |
EntityReference | 複製實體參考節點。 不包括取代文字。 | 複製實體參考節點。 不包括取代文字。 |
表示法 | 標記法節點無法複製。 | 標記法節點無法複製。 |
ProcessingInstruction | 複製處理指示節點,包括其目標和資料。 | 複製處理指示節點,包括其目標和資料。 |
SignificantWhitespace | 複製重要的空白字元節點,包括其資料值。 | 複製重要的空白字元節點,包括其資料值。 |
Text | 複製文位元組點,包括其資料值。 | 複製文位元組點,包括其資料值。 |
空白 | 複製空白字元節點,包括其資料值。 | 複製空白字元節點,包括其資料值。 |
XmlDeclaration | 複製 XmlDeclaration 節點,包括其資料值。 | 複製 XmlDeclaration 節點,包括其資料值。 |
所有其他節點類型。 | 無法複製這些節點類型。 | 無法複製這些節點類型。 |