ImportNode メソッドを使用すると、ある XmlDocument から別の XmlDocument へ、ノードまたはノードのサブツリー全体をコピーできます。 呼び出しから返されるノードは、ソース ドキュメントのノードのコピーであり、そこには属性値、ノード名、ノード型が含まれます。さらに、プレフィックス、ローカル名、名前空間 URI (Uniform Resource Identifier) など、名前空間に関連するすべての属性も含まれます。 ソース ドキュメントは変更されません。 インポートしたノードは、ノードを挿入するメソッドの 1 つを使用してツリーに追加する必要があります。
新しいドキュメントにノードを追加すると、その新しいドキュメントがそのノードを所有します。 これは、ノードが別のドキュメント フラグメントに作成される場合でも、各ノードの作成時には所有元のドキュメントが設定されるためです。 これは XML ドキュメント オブジェクト モデル (DOM) の要件であり、XmlDocument クラスの設計仕様です。 たとえば、CreateElement は、新しいノードを作成する唯一の手段です。
インポートされたノード型と deep パラメーターの値によって、必要に応じて追加情報がコピーされます。 XML では、あるドキュメントから別のドキュメントへ XML ソースまたは HTML ソースのフラグメントをコピーしたときに 2 つのドキュメントのドキュメント型定義 (DTD) が別々になることがありますが、このメソッドでは、その動作を再現しようとします。
インポートできるノードの型について、それぞれに固有の動作を次の表に示します。
ノード型 |
deep パラメーターが true |
deep パラメーターが false |
---|---|---|
XmlAttribute |
XmlAttribute では、XmlAttribute.Specified プロパティが true に設定されます。 ソース XmlAttribute の子孫は再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。 |
XmlAttribute ノードは常に子ノードと共にインポートされるため、XmlAttribute ノードには deep パラメーターは適用されません。 |
XmlCDataSection |
ノードをそのデータと共にコピーします。 |
ノードをそのデータと共にコピーします。 |
XmlComment |
ノードをそのデータと共にコピーします。 |
ノードをそのデータと共にコピーします。 |
XmlDocumentFragment |
ソース ノードの子孫が再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。 |
空の XmlDocumentFragment が作成されます。 |
XmlDocumentType |
ノードがデータと共にコピーされます。* |
ノードがデータと共にコピーされます。* |
XmlElement |
ソース要素の子孫が再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。 ![]()
既存の属性はコピーされません。インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。
|
指定された属性ノードがソース要素からインポートされ、生成された XmlAttribute ノードが新しい要素に追加されます。 子孫ノードはコピーされません。 ![]()
既存の属性はコピーされません。インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。
|
XmlEntityReference |
ソース ドキュメントとターゲット ドキュメントではエンティティの定義が異なる可能性があるため、このメソッドは XmlEntityReference ノードだけをコピーします。 置換テキストは含まれません。 インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。 |
ソース ドキュメントとターゲット ドキュメントではエンティティの定義が異なる可能性があるため、このメソッドは XmlEntityReference ノードだけをコピーします。 置換テキストは含まれません。 インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。 |
XmlProcessingInstruction |
インポートされたノードから、ターゲットおよびデータの値がコピーされます。 |
インポートされたノードから、ターゲットおよびデータの値がコピーされます。 |
XmlText |
ノードをそのデータと共にコピーします。 |
ノードをそのデータと共にコピーします。 |
XmlSignificantWhitespace |
ノードをそのデータと共にコピーします。 |
ノードをそのデータと共にコピーします。 |
XmlWhitespace |
ノードをそのデータと共にコピーします。 |
ノードをそのデータと共にコピーします。 |
XmlDeclaration |
インポートしたノードから対象の値とデータ値をコピーします。 |
インポートされたノードから、ターゲットおよびデータの値がコピーされます。 |
その他のすべてのノード型 |
これらのノード型はインポートできません。 |
これらのノード型はインポートできません。 |
![]() |
---|
DocumentType ノードはインポートできますが、1 つのドキュメントは 1 つの DocumentType しか持てません。したがって、ドキュメント型をインポートした場合は、それをツリーに挿入する前に、ドキュメント内にドキュメント型がないことを確認する必要があります。ノードの削除については、「XML ドキュメントからのノード、コンテンツ、値の削除」を参照してください。 |