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 ドキュメントの種類のノードを複製します。 ドキュメントの種類のノードを複製します。
要素 要素ノード、その属性、およびすべての子ノードを複製します。 既定の属性を含め、要素ノードとその属性を複製します。
エンティティ エンティティ ノードのクローンは作成できません。 エンティティ ノードのクローンは作成できません。
EntityReference エンティティ参照ノードを複製します。 置換テキストは含まれません。 エンティティ参照ノードを複製します。 置換テキストは含まれません。
表記 表記ノードのクローンは作成できません。 表記ノードのクローンは作成できません。
ProcessingInstruction ターゲットとデータを含む処理命令ノードを複製します。 ターゲットとデータを含む処理命令ノードを複製します。
SignificantWhitespace データ値を含む、重要な空白ノードを複製します。 データ値を含む、重要な空白ノードを複製します。
Text データ値を含むテキスト ノードを複製します。 データ値を含むテキスト ノードを複製します。
空白 データ値を含む空白ノードを複製します。 データ値を含む空白ノードを複製します。
XmlDeclaration データ値を含む XmlDeclaration ノードを複製します。 データ値を含む XmlDeclaration ノードを複製します。
その他のすべてのノード タイプ。 これらのノード タイプは複製できません。 これらのノード タイプは複製できません。

適用対象