XmlDocument.ImportNode(XmlNode, Boolean) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
別のドキュメントから現在のドキュメントにノードをインポートします。
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。
例外
インポートできないノード型でこのメソッドを呼び出しています。
例
次の使用例は、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同じになります。 新しいオブジェクトには、名前空間 (Prefix、 LocalNameおよび 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 ノードがある場合は、新しいドキュメントを追加する前に削除する必要があります。