ImportNode メソッドは、ノードまたはノード サブツリー全体をある XmlDocument から別の XmlDocument にコピーするメカニズムです。 呼び出しから返されるノードは、属性値、ノード名、ノードの種類、プレフィックス、ローカル名、名前空間 Uniform Resource Identifier (URI) など、名前空間に関連するすべての属性を含む、ソース ドキュメントからのノードのコピーです。 ソース ドキュメントは変更されません。 ノードをインポートした後も、ノードの挿入に使用するいずれかの方法を使用して、ノードをツリーに追加する必要があります。
ノードが新しいドキュメントにアタッチされると、新しいドキュメントがノードを所有します。 その理由は、ノードが個別のドキュメント フラグメントで作成されている場合でも、作成時に各ノードに所有ドキュメントがあるということです。 これは XML ドキュメント オブジェクト モデル (DOM) の要件であり、 XmlDocument クラスのファクトリ作成設計によって適用されます。 たとえば、 CreateElement は、新しいノードを作成する唯一の方法です。
インポートされたノードのノードの種類と ディープ パラメーターの値に応じて、必要に応じて追加情報がコピーされます。 このメソッドは、XML または HTML ソースのフラグメントが 1 つのドキュメントから別のドキュメントにコピーされた場合に予期される動作をミラー化しようとします。これは、XML の場合、2 つのドキュメントのドキュメント型定義 (DTD) が異なる可能性があることを示しています。
次の表では、インポートできるノードの種類ごとの特定の動作について説明します。
ノード タイプ | deep パラメーターは true です | deep パラメーターが false です |
---|---|---|
XmlAttribute | xmlAttribute では、 Specified が true に設定されています。 ソース XmlAttribute の子孫が再帰的にインポートされ、結果のノードが再アセンブルされて、対応するサブツリーが形成されます。 | ディープ パラメーターは XmlAttribute ノードには適用されません。これは、インポート時に常に子ノードを持ち運ぶためです。 |
XmlCDataSection | データを含むノードをコピーします。 | データを含むノードをコピーします。 |
XmlComment | データを含むノードをコピーします。 | データを含むノードをコピーします。 |
XmlDocumentFragment | ソース ノードの子孫が再帰的にインポートされ、結果のノードが再アセンブルされて、対応するサブツリーが形成されます。 | 空の XmlDocumentFragment が作成されます。 |
XmlDocumentType | データを含むノードをコピーします。* | データを含むノードをコピーします。* |
XmlElement | ソース要素の子孫が再帰的にインポートされ、結果のノードが再アセンブルされて、対応するサブツリーが形成されます。 手記: 既定の属性はコピーされません。 インポートするドキュメントでこの要素名の既定の属性が定義されている場合は、それらが割り当てられます。 | ソース要素の指定された属性ノードがインポートされ、生成された XmlAttribute ノードが新しい要素にアタッチされます。 子孫ノードはコピーされません。 手記: 既定の属性はコピーされません。 インポートするドキュメントでこの要素名の既定の属性が定義されている場合は、それらが割り当てられます。 |
XmlEntityReference | ソース ドキュメントとコピー先ドキュメントではエンティティの定義が異なる場合があるため、このメソッドは XmlEntityReference ノードのみをコピーします。 置換テキストは含まれません。 インポート先ドキュメントにエンティティが定義されている場合、その値が割り当てられます。 | ソース ドキュメントとコピー先ドキュメントではエンティティの定義が異なる場合があるため、このメソッドは XmlEntityReference ノードのみをコピーします。 置換テキストは含まれません。 インポート先ドキュメントにエンティティが定義されている場合、その値が割り当てられます。 |
XmlProcessingInstruction | インポートされたノードからターゲットとデータの値をコピーします。 | インポートされたノードからターゲットとデータの値をコピーします。 |
XmlText | データを含むノードをコピーします。 | データを含むノードをコピーします。 |
XmlSignificantWhitespace | データを含むノードをコピーします。 | データを含むノードをコピーします。 |
XmlWhitespace | データを含むノードをコピーします。 | データを含むノードをコピーします。 |
XmlDeclaration | インポートされたノードからターゲットとデータの値をコピーします。 | インポートされたノードからターゲットとデータの値をコピーします。 |
その他すべてのノード タイプ | これらのノード タイプはインポートできません。 | これらのノード タイプはインポートできません。 |
注
DocumentType ノードはインポートできますが、ドキュメントに含めることができる DocumentType は 1 つだけです。 そのため、ドキュメントの種類をインポートしたら、ツリーに挿入する前に、ドキュメントにドキュメントの種類がないことを確認する必要があります。 ノードの削除の詳細については、「 XML ドキュメントからのノード、コンテンツ、および値の削除」を参照してください。
こちらも参照ください
.NET