XmlDocument.ImportNode(XmlNode, Boolean) XmlDocument.ImportNode(XmlNode, Boolean) XmlDocument.ImportNode(XmlNode, Boolean) XmlDocument.ImportNode(XmlNode, Boolean) Method

定義

別のドキュメントから現在のドキュメントにノードをインポートします。Imports a node from another document to the current document.

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 XmlNode XmlNode XmlNode

インポートしているノード。The node being imported.

deep
Boolean Boolean Boolean Boolean

詳細クローンを実行する場合は true。それ以外の場合は falsetrue to perform a deep clone; otherwise, false.

戻り値

インポートされた XmlNodeThe imported XmlNode.

例外

インポートできないノード型でこのメソッドを呼び出しています。Calling this method on a node type which cannot be imported.

次の例では、2番目の XML ドキュメントから元の XML ドキュメントに book ノードをインポートします。The following example imports a book node from a second XML document into the original XML document.

#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
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 'Main 
End Class 'Sample

この例では、ファイルbooks.xmlを入力として使用します。The example uses the file, books.xml, as input.

<?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>

注釈

返されたノードには親がありません。The returned node has no parent. ソースノードは、元のドキュメントから変更または削除されません。ImportNodeソースノードのコピーを作成します。The source node is not altered or removed from the original document; ImportNode creates a copy of the source node.

ノードをインポートするXmlNode NameNodeType 、インポートするドキュメントによって所有されるオブジェクトが作成され、ソースノードと同一になります。Importing a node creates an XmlNode object owned by the importing document, with Name and NodeType identical to the source node. 新しいオブジェクトには、名前空間 (PrefixLocalName、およびNamespaceURI) に関連する属性もあります。The new object also has the attributes related to namespaces (Prefix, LocalName, and NamespaceURI).

インポートされたノードのノードの種類とdeepパラメーターの値に応じて、必要に応じて追加情報がコピーされます。Depending on the node type of the imported node and the value of the deep parameter, additional information is copied as appropriate. このメソッドは、XML または HTML ソースのフラグメントがあるドキュメントから別のドキュメントにコピーされた場合に想定される動作をミラー化しようとします (XML ケースでは、2つのドキュメントの Dtd が異なる可能性があることを認識しています)。This method attempts to mirror the behavior expected if a fragment of XML or HTML source was copied from one document to another (recognizing that, in the XML case, the two documents could have different DTDs).

次の表では、それぞれXmlNodeTypeの固有の動作について説明します。The following table describes the specific behavior for each XmlNodeType.

XmlNodeTypeXmlNodeType ImportNode (true)ImportNode(true) ImportNode (false)ImportNode(false)
属性Attribute 生成さtrue Specified れたに対してXmlAttributeプロパティがに設定されます。The Specified property is set to true on the generated XmlAttribute. ソースXmlAttributeの子孫が再帰的にインポートされ、結果として得られるノードが、対応するサブツリーを形成するように再構築されます。The descendants of the source XmlAttribute are recursively imported and the resulting nodes reassembled to form the corresponding subtree. パラメーター deepはノードにXmlAttributeは適用されません。このパラメーターは、インポート時に常に子を保持します。The deep parameter does not apply to XmlAttribute nodes; they always carry their children with them when imported.
CDataCData ノードをそのデータと共にコピーします。Copies the node, including its data. ノードをそのデータと共にコピーします。Copies the node, including its data.
コメントComment ノードをそのデータと共にコピーします。Copies the node, including its data. ノードをそのデータと共にコピーします。Copies the node, including its data.
DocumentFragmentDocumentFragment ソース ノードの子孫が再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。The descendants of the source node are recursively imported and the resulting nodes reassembled to form the corresponding subtree. XmlDocumentFragmentのが生成されます。An empty XmlDocumentFragment is generated.
DocumentTypeDocumentType ノードがデータと共にコピーされます。*Copies the node, including its data.* ノードがデータと共にコピーされます。*Copies the node, including its data.*
要素Element ソース要素と指定された属性ノードの子孫が再帰的にインポートされ、結果として得られるノードが、対応するサブツリーを形成するように再構築されます。The descendants of the source element and its specified attribute nodes are recursively imported and the resulting nodes reassembled to form the corresponding subtree.

メモ:既存の属性はコピーされません。Note: Default attributes are not copied. インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。If the document being imported into defines default attributes for this element name, those are assigned.
ソース要素の指定された属性ノードがインポートXmlAttributeされ、生成されたノードが生成XmlElementされたにアタッチされます。Specified attribute nodes of the source element are imported, and the generated XmlAttribute nodes are attached to the generated XmlElement.

メモ:既存の属性はコピーされません。Note: Default attributes are not copied. インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。If the document being imported into defines default attributes for this element name, those are assigned.
EntityReferenceEntityReference ソースとターゲットのドキュメントではエンティティの定義が異なる場合があるため、このXmlEntityReferenceメソッドはノードをコピーするだけです。Because the source and destination documents could have the entities defined differently, this method only copies the XmlEntityReference node. 置換テキストは含まれません。The replacement text is not included. インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。If the destination document has the entity defined, its value is assigned. ソースとターゲットのドキュメントではエンティティの定義が異なる場合があるため、このXmlEntityReferenceメソッドはノードをコピーするだけです。Because the source and destination documents could have the entities defined differently, this method only copies the XmlEntityReference node. 置換テキストは含まれません。The replacement text is not included. インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。If the destination document has the entity defined, its value is assigned.
ProcessingInstructionProcessingInstruction インポートされたノードから、ターゲットおよびデータの値がコピーされます。Copies the target and data value from the imported node. インポートされたノードから、ターゲットおよびデータの値がコピーされます。Copies the target and data value from the imported node.
テキストText ノードをそのデータと共にコピーします。Copies the node, including its data. ノードをそのデータと共にコピーします。Copies the node, including its data.
SignificantWhitespaceSignificantWhitespace ノードをそのデータと共にコピーします。Copies the node, including its data. ノードをそのデータと共にコピーします。Copies the node, including its data.
WhitespaceWhitespace ノードをそのデータと共にコピーします。Copies the node, including its data. ノードをそのデータと共にコピーします。Copies the node, including its data.
XmlDeclarationXmlDeclaration インポートされたノードから、ターゲットおよびデータの値がコピーされます。Copies the target and data value from the imported node. インポートされたノードから、ターゲットおよびデータの値がコピーされます。Copies the target and data value from the imported node.
その他のすべてのノード型。All other node types. これらのノード型はインポートできません。These node types cannot be imported. これらのノード型はインポートできません。These node types cannot be imported.

* DocumentType ノードはインポートできますが、ドキュメントに含めることができる DocumentType は1つだけです。*Although DocumentType nodes can be imported, a document can only have one DocumentType. ドキュメントに現在 DocumenType ノードがある場合は、新しいノードを追加する前に削除する必要があります。If the document currently has a DocumenType node, it must be removed before adding a new one.

適用対象