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

適用於