XmlDocument.ImportNode(XmlNode, Boolean) メソッド

定義

別のドキュメントから現在のドキュメントにノードをインポートします。

public:
 virtual System::Xml::XmlNode ^ ImportNode(System::Xml::XmlNode ^ node, bool deep);
public virtual System.Xml.XmlNode ImportNode (System.Xml.XmlNode node, bool deep);
abstract member ImportNode : System.Xml.XmlNode * bool -> System.Xml.XmlNode
override this.ImportNode : System.Xml.XmlNode * bool -> System.Xml.XmlNode
Public Overridable Function ImportNode (node As XmlNode, deep As Boolean) As XmlNode

パラメーター

node
XmlNode

インポートしているノード。

deep
Boolean

詳細クローンを実行する場合は true。それ以外の場合は false

戻り値

XmlNode

インポートされた XmlNode

例外

インポートできないノード型でこのメソッドを呼び出しています。

次の使用例は、2 番目の XML ドキュメントから元の XML ドキュメントにブック ノードをインポートします。

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   
   //Create the XmlDocument.
   XmlDocument^ doc = gcnew XmlDocument;
   doc->LoadXml( "<bookstore><book genre='novel' ISBN='1-861001-57-5'><title>Pride And Prejudice</title></book></bookstore>" );
   
   //Create another XmlDocument which holds a list of books.
   XmlDocument^ doc2 = gcnew XmlDocument;
   doc2->Load( "books.xml" );
   
   //Import the last book node from doc2 into the original document.
   XmlNode^ newBook = doc->ImportNode( doc2->DocumentElement->LastChild, true );
   doc->DocumentElement->AppendChild( newBook );
   Console::WriteLine( "Display the modified XML..." );
   doc->Save( Console::Out );
}

using System;
using System.IO;
using System.Xml;

public class Sample
{
  public static void Main()
  {
    //Create the XmlDocument.
    XmlDocument doc = new XmlDocument();
    doc.LoadXml("<bookstore>" +
                "<book genre='novel' ISBN='1-861001-57-5'>" +
                "<title>Pride And Prejudice</title>" +
                "</book>" +
                "</bookstore>");

    //Create another XmlDocument which holds a list of books.
    XmlDocument doc2 = new XmlDocument();
    doc2.Load("books.xml");

    //Import the last book node from doc2 into the original document.
    XmlNode newBook = doc.ImportNode(doc2.DocumentElement.LastChild, true);
    doc.DocumentElement.AppendChild(newBook);

    Console.WriteLine("Display the modified XML...");
    doc.Save(Console.Out);
  }
}
Option Explicit
Option Strict

Imports System.IO
Imports System.Xml

Public Class Sample
    
    Public Shared Sub Main()
        'Create the XmlDocument.
        Dim doc As New XmlDocument()
        doc.LoadXml("<bookstore>" & _
                    "<book genre='novel' ISBN='1-861001-57-5'>" & _
                    "<title>Pride And Prejudice</title>" & _
                    "</book>" & _
                    "</bookstore>")
        
        'Create another XmlDocument which holds a list of books.
        Dim doc2 As New XmlDocument()
        doc2.Load("books.xml")
        
        'Import the last book node from doc2 into the original document.
        Dim newBook As XmlNode = doc.ImportNode(doc2.DocumentElement.LastChild, True)
        doc.DocumentElement.AppendChild(newBook)
        
        Console.WriteLine("Display the modified XML...")
        doc.Save(Console.Out)
    End Sub
End Class

この例では、 books.xmlファイルを入力として使用します。

<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

注釈

返されたノードには親がありません。 ソース ノードは、元のドキュメントから変更または削除されません。 ImportNode は、ソース ノードのコピーを作成します。

ノードをインポートすると、インポート元のドキュメントが所有するオブジェクトが作成XmlNodeされ、ソース ノードとNameNodeType同じになります。 新しいオブジェクトには、名前空間 (PrefixLocalNameおよび NamespaceURI) に関連する属性もあります。

インポートされたノードのノードの種類とパラメーターの deep 値に応じて、必要に応じて追加情報がコピーされます。 このメソッドは、XML または HTML ソースのフラグメントが 1 つのドキュメントから別のドキュメントにコピーされた場合に予期される動作をミラー化しようとします (XML の場合、2 つのドキュメントの DTD が異なる可能性があることを認識します)。

次の表では、それぞれの XmlNodeType特定の動作について説明します。

XmlNodeType ImportNode(true) ImportNode(false)
属性 この Specified プロパティは、生成されたオブジェクトに対して true 設定されます XmlAttribute。 ソース XmlAttribute の子孫が再帰的にインポートされ、結果のノードが再構成されて、対応するサブツリーが形成されます。 パラメーターは deep ノードには XmlAttribute 適用されません。インポート時には常に子を持ち歩きます。
CData ノードをそのデータと共にコピーします。 ノードをそのデータと共にコピーします。
コメント ノードをそのデータと共にコピーします。 ノードをそのデータと共にコピーします。
DocumentFragment ソース ノードの子孫が再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。 XmlDocumentFragment が生成されます。
DocumentType ノードがデータと共にコピーされます。* ノードがデータと共にコピーされます。*
要素 ソース要素とその指定した属性ノードの子孫が再帰的にインポートされ、結果のノードが再構成されて、対応するサブツリーが形成されます。

注: 既存の属性はコピーされません。 インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。
ソース要素の指定された属性ノードがインポートされ、生成された XmlAttribute ノードが生成 XmlElementされたノードにアタッチされます。

注: 既存の属性はコピーされません。 インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。
EntityReference ソース ドキュメントとコピー先ドキュメントのエンティティの定義が異なる場合があるため、このメソッドはノードのみをコピー XmlEntityReference します。 置換テキストは含まれません。 インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。 ソース ドキュメントとコピー先ドキュメントのエンティティの定義が異なる場合があるため、このメソッドはノードのみをコピー XmlEntityReference します。 置換テキストは含まれません。 インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。
ProcessingInstruction インポートされたノードから、ターゲットおよびデータの値がコピーされます。 インポートされたノードから、ターゲットおよびデータの値がコピーされます。
Text ノードをそのデータと共にコピーします。 ノードをそのデータと共にコピーします。
SignificantWhitespace ノードをそのデータと共にコピーします。 ノードをそのデータと共にコピーします。
空白 ノードをそのデータと共にコピーします。 ノードをそのデータと共にコピーします。
XmlDeclaration インポートされたノードから、ターゲットおよびデータの値がコピーされます。 インポートされたノードから、ターゲットおよびデータの値がコピーされます。
その他のすべてのノード タイプ。 これらのノード型はインポートできません。 これらのノード型はインポートできません。

*DocumentType ノードはインポートできますが、ドキュメントに含めることができる DocumentType は 1 つだけです。 ドキュメントに現在 DocumentType ノードがある場合は、新しいドキュメントを追加する前に削除する必要があります。

適用対象