次の方法で共有


リレーショナル データと ADO.NET との XML 統合

XmlDataDocument クラスは XmlDocument の派生クラスであり、XML データが含まれています。 XmlDataDocument の利点は、リレーショナル データと階層データの間のブリッジを提供することです。 これは、DataSet にバインドできる XmlDocument であり、両方のクラスで、2 つのクラスに含まれるデータに加えられた変更を同期できます。 DataSet にバインドされた XmlDocument を使用すると、XML をリレーショナル データと統合でき、データを XML またはリレーショナル形式で表す必要はありません。 データの 1 つの表現に制約を受けないように、両方を実行できます。

2 つのビューでデータを使用できる利点は次のとおりです。

  • XML ドキュメントの構造化された部分をデータセットにマップし、効率的に格納、インデックス作成、検索することができます。

  • 変換、検証、ナビゲーションは、リレーショナルに格納されている XML データに対するカーソル モデルを使用して効率的に実行できます。 XML が XmlDocument モデルに格納されている場合よりも、リレーショナル構造に対して効率的に実行できる場合があります。

  • DataSet は XML の一部を格納できます。 つまり、 XPath または XslTransform を使用して、対象の要素と属性のみを DataSet に格納できます。 そこから、データの小さいフィルター処理されたサブセットに変更を加え、 XmlDataDocument の大きなデータに変更を反映させることができます。

SQL Server から DataSet に読み込まれたデータに対して変換を実行することもできます。 もう 1 つのオプションは、.NET Framework クラススタイルで管理される WinForm コントロールと WebForm コントロールを、XML 入力ストリームから設定された DataSet にバインドすることです。

XmlDataDocument では、XslTransform のサポートに加えて、リレーショナル データが XPath クエリと検証に公開されます。 基本的に、すべての XML サービスはリレーショナル データを介して使用でき、制御バインディング、codegen などのリレーショナル機能は、XML の忠実性を損なうことなく、XML の構造化プロジェクションを介して使用できます。

XmlDataDocumentXmlDocument から継承されるため、W3C DOM の実装を提供します。 XmlDataDocument が関連付けされ、そのデータのサブセットが格納されるという事実は、DataSet によって XmlDocument としての使用が制限されたり変更されたりすることはありません。 XmlDocument を使用するように記述されたコードは、XmlDataDocument に対して変更されません。 DataSet は、テーブル、列、リレーション、制約を定義することで同じデータのリレーショナル ビューを提供し、スタンドアロンのインメモリ ユーザー データ ストアです。

次の図は、XML データと DataSetXmlDataDocument の関連付けを示しています。

XML DataSet とのさまざまな関連付けを示す図。

この図は、XML データを DataSet に直接読み込むことができることを示しています。これにより、リレーショナル方式で XML を直接操作できます。 または、XML を DOM の派生クラス ( XmlDataDocument) に読み込み、その後 DataSet に読み込んで同期することができます。 DataSetXmlDataDocument は 1 つのデータ セットで同期されるため、1 つのストア内のデータに加えられた変更は、もう一方のストアに反映されます。

XmlDataDocument は、XmlDocument からすべての編集機能とナビゲーション機能を継承します。 XmlDataDocument とその継承された機能を DataSet と同期して使用する方が、XML を DataSet に直接読み込むよりも適切なオプションである場合があります。 次の表に、 DataSet の読み込みに使用する方法を選択するときに考慮する項目を示します。

Xml を DataSet に直接読み込むタイミング XmlDataDocument を DataSet と同期するタイミング
DataSet 内のデータのクエリは、XPath よりも SQL を使用する方が簡単です。 DataSet 内のデータに対して XPath クエリが必要です。
ソース XML での要素の順序の保持は重要ではありません。 ソース XML での要素の順序の保持は重要です。
要素と書式の間の空白は、ソース XML に保持する必要はありません。 ソース XML での空白と書式設定の保持は非常に重要です。

DataSet に対して直接 XML を読み込みや書き込みを行うことでニーズを満たせる場合は、「XML から DataSet を読み込む」および「DataSet を XML データとして書き込む」を参照してください。

XmlDataDocument から DataSet を読み込みたい場合は、「データセットと XML ドキュメントの同期」を参照してください。

こちらも参照ください