次の方法で共有


DataSet と XmlDataDocument の同期

ADO.NET DataSet は、データのリレーショナル表現を提供します。 階層データ アクセスには、.NET Framework で使用できる XML クラスを使用できます。 これまで、これら 2 つのデータ表現は個別に使用されてきました。 ただし、.NET Framework を使用すると、 DataSet オブジェクトと XmlDataDocument オブジェクトを介して、データのリレーショナル表現と階層表現の両方にリアルタイムで同期アクセスできます。

DataSetXmlDataDocument と同期されると、両方のオブジェクトが 1 つのデータ セットで動作します。 つまり、 DataSet に変更が加えられた場合、その変更は XmlDataDocument に反映され、その逆も同様です。 DataSetXmlDataDocumentの関係により、1 つのアプリケーションで単一のデータ セットを使用して、DataSet (Web フォームコントロールや Windows フォーム コントロール、Visual Studio .NET デザイナーなど) を中心に構築されたサービススイート全体、および拡張スタイルシート言語 (XSL) を含む一連の XML サービスにアクセスできるようにすることで、優れた柔軟性が得られます。 XSL 変換 (XSLT)、および XML パス言語 (XPath)。 アプリケーションを対象とするサービスのセットを選択する必要はありません。両方とも使用できます。

DataSetを XmlDataDocument と同期するには、いくつかの方法があります。 次のようにすることができます。

  • スキーマ (つまりリレーショナル構造) とデータを DataSet に設定し、それを新しい XmlDataDocument と同期します。 これにより、既存のリレーショナル データの階層ビューが提供されます。 例えば次が挙げられます。

    Dim dataSet As DataSet = New DataSet
    
    ' Add code here to populate the DataSet with schema and data.
    
    Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet)
    
    DataSet dataSet = new DataSet();
    
    // Add code here to populate the DataSet with schema and data.
    
    XmlDataDocument xmlDoc = new XmlDataDocument(dataSet);
    
  • スキーマのみを DataSet に設定し (厳密に型指定された DataSet など)、 XmlDataDocument と同期してから、XML ドキュメントから XmlDataDocument を読み込みます。 これにより、既存の階層データのリレーショナル ビューが提供されます。 DataSet スキーマ内のテーブル名と列名は、同期する XML 要素の名前と一致している必要があります。 この名前の一致では、大文字と小文字が区別されます。

    DataSetのスキーマは、リレーショナル ビューで公開する XML 要素とのみ一致する必要があることに注意してください。 これにより、非常に大きな XML ドキュメントを作成し、そのドキュメントに非常に小さなリレーショナル "ウィンドウ" を作成できます。 XmlDataDocumentは、DataSetが XML ドキュメントのごく一部のみを公開している場合でも、XML ドキュメント全体を保持します。 (この詳細な例については、「 DataSet と XmlDataDocument の同期」を参照してください)。

    次のコード例は、 DataSet を作成し、そのスキーマを設定してから、 それを XmlDataDocument と同期する手順を示しています。 DataSet スキーマは、XmlDataDocument を使用して公開するの要素とのみ一致する必要があることに注意してください。

    Dim dataSet As DataSet = New DataSet
    
    ' Add code here to populate the DataSet with schema, but not data.
    
    Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet)
    xmlDoc.Load("XMLDocument.xml")
    
    DataSet dataSet = new DataSet();
    
    // Add code here to populate the DataSet with schema, but not data.
    
    XmlDataDocument xmlDoc = new XmlDataDocument(dataSet);
    xmlDoc.Load("XMLDocument.xml");
    

    データを含むXmlDataDocumentと同期している場合、DataSetを読み込むことはできません。 読み込もうとすると例外がスローされます。

  • 新しいXmlDataDocumentを作成し、XML ドキュメントから読み込み、DataSet プロパティを使用してデータのリレーショナル ビューにアクセスします。 DataSet を使用してXmlDataDocument内のデータを表示するには、のスキーマを設定する必要があります。 ここでも、 DataSet スキーマのテーブル名と列名は、同期する XML 要素の名前と一致する必要があります。 この名前の一致では、大文字と小文字が区別されます。

    次のコード例は、 XmlDataDocument 内のデータのリレーショナル ビューにアクセスする方法を示しています。

    Dim xmlDoc As XmlDataDocument = New XmlDataDocument
    Dim dataSet As DataSet = xmlDoc.DataSet
    
    ' Add code here to create the schema of the DataSet to view the data.
    
    xmlDoc.Load("XMLDocument.xml")
    
    XmlDataDocument xmlDoc = new XmlDataDocument();
    DataSet dataSet = xmlDoc.DataSet;
    
    // Add code here to create the schema of the DataSet to view the data.
    
    xmlDoc.Load("XMLDocument.xml");
    

XmlDataDocumentDataSetと同期するもう 1 つの利点は、XML ドキュメントの忠実性が維持される点です。 DataSetが ReadXml を使用して XML ドキュメントから設定されている場合、WriteXmlを使用してデータが XML ドキュメントとして書き戻されるときに、元の XML ドキュメントと大きく異なる場合があります。 これは、 DataSet が空白などの書式設定や、要素の順序などの階層情報を XML ドキュメントから保持しないためです。 また、 DataSet には、 データセットのスキーマと一致しないために無視された XML ドキュメントの要素も含まれません。 XmlDataDocumentDataSetと同期すると、元の XML ドキュメントの書式設定と階層要素構造を XmlDataDocument で維持できますが、DataSetには DataSet に適したデータとスキーマ情報のみが含まれます。

DataSetを XmlDataDocument と同期する場合、DataRelation オブジェクトが入れ子になっているかどうかによって結果が異なる場合があります。 詳しくは、「DataRelation の入れ子化」をご覧ください。

このセクションにて

DataSet と XmlDataDocument の同期 厳密に型指定された DataSet を最小限のスキーマで XmlDataDocument と同期する方法を示します。

DataSet に対する XPath クエリの実行DataSet の内容に対して XPath クエリを実行する方法を示します。

DataSet への XSLT 変換の適用DataSet の内容に XSLT 変換を適用する方法を示します。

DataSet での XML の使用DataSetがデータ ソースとして XML と対話する方法について説明します。たとえば、DataSetの内容を XML データとして読み込んで永続化する方法などです。

階層化 DataRelations は、DataRelation の内容を XML データとして表現する際における DataSet オブジェクトの重要性を論じ、これらのリレーションシップの作成方法を説明します。

DataSets、DataTables、DataViewsDataSetと、それを使用してアプリケーション データを管理し、リレーショナル データベースや XML などのデータ ソースと対話する方法について説明します。

XmlDataDocument XmlDataDocument クラスに関する参照情報を格納します。

こちらも参照ください