DataSet と XmlDataDocument の同期DataSet and XmlDataDocument Synchronization

ADO.NET の DataSet には、データのリレーショナル表現があります。The ADO.NET DataSet provides you with a relational representation of data. 階層データにアクセスするには、.NET Framework で使用できる XML クラスを使用できます。For hierarchical data access, you can use the XML classes available in the .NET Framework. 従来、この 2 つのデータ表現は個別に使用されていました。Historically, these two representations of data have been used separately. .NET Framework では、データのリレーショナル表現と階層表現の両方へリアルタイムに同期的な方法でアクセスできます。リレーショナル表現にアクセスするには DataSet オブジェクトを使用します。階層表現にアクセスするには XmlDataDocument オブジェクトを使用します。However, the .NET Framework enables real-time, synchronous access to both the relational and hierarchical representations of data through the DataSet object and the XmlDataDocument object, respectively.

DataSetXmlDataDocument と同期されているときは、両方のオブジェクトが 1 つのデータ セットで動作しています。When a DataSet is synchronized with an XmlDataDocument, both objects are working with a single set of data. つまり DataSet が変更されると、その変更内容が XmlDataDocument に反映されます。この逆の反映も行われます。This means that if a change is made to the DataSet, the change will be reflected in the XmlDataDocument, and vice versa. DataSetXmlDataDocument の間のリレーションシップにより、1 つのアプリケーションから 1 つのデータ セットを使用して、DataSet の周囲に構築されたサービス スイート全体 (Web Forms、Windows フォーム コントロール、Visual Studio、.NET デザイナーなど) にアクセスしたり、XML サービス スイート (XSL (Extensible Stylesheet Language)、XSLT (XSL Transformations)、XPath (XML Path Language) など) にアクセスしたりできる優れた柔軟性が実現されます。The relationship between the DataSet and the XmlDataDocument creates great flexibility by allowing a single application, using a single set of data, to access the entire suite of services built around the DataSet (such as Web Forms and Windows Forms controls, and Visual Studio .NET designers), as well as the suite of XML services including Extensible Stylesheet Language (XSL), XSL Transformations (XSLT), and XML Path Language (XPath). アプリケーションでアクセス対象とするサービス セットを選択する必要はありません。どちらのサービス セットにもアクセスできます。You do not have to choose which set of services to target with the application; both are available.

DataSetXmlDataDocument と同期する方法は数種類あります。There are several ways that you can synchronize a DataSet with an XmlDataDocument. 次の操作を行うことができます。You can:

  • DataSet にスキーマ (リレーショナル構造) とデータを読み込み、この DataSet を新しい XmlDataDocument と同期します。Populate a DataSet with schema (that is, a relational structure) and data and then synchronize it with a new XmlDataDocument. この方法では、既存のリレーショナル データの階層ビューが作成されます。This provides a hierarchical view of existing relational data. 次に例を示します。For example:

    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 を読み込みます。Populate a DataSet with schema only (such as a strongly typed DataSet), synchronize it with an XmlDataDocument, and then load the XmlDataDocument from an XML document. この方法では、既存の階層データのリレーショナル ビューが作成されます。This provides a relational view of existing hierarchical data. DataSet スキーマのテーブル名と列名が、同期をとる XML 要素の名前と一致している必要があります。The table names and column names in your DataSet schema must match the names of the XML elements that you want them synchronized with. この名前の一致では、大文字と小文字が区別されます。This matching is case-sensitive.

    DataSet のスキーマが一致する必要があるのは、リレーショナル ビューで公開する XML 要素だけです。Note that the schema of the DataSet only needs to match the XML elements that you want to expose in your relational view. つまり、このドキュメント上に非常に大きい XML ドキュメントと非常に小さなリレーショナル ウィンドウを作成できます。This way, you can have a very large XML document and a very small relational "window" on that document. DataSet で XML ドキュメントの一部だけが公開される場合でも、XmlDataDocument では XML ドキュメント全体が保持されます。The XmlDataDocument preserves the entire XML document even though the DataSet only exposes a small portion of it. (これの詳しい例については、「Dataset と XmlDataDocument の同期」をご覧ください)。(For a detailed example of this, see Synchronizing a DataSet with an XmlDataDocument.)

    次のコード例では、DataSet を作成してそのスキーマを読み込み、XmlDataDocument と同期する手順を示します。The following code example shows the steps for creating a DataSet and populating its schema, then synchronizing it with an XmlDataDocument. DataSet スキーマが一致する必要があるのは、XmlDataDocument の中で DataSet を使用して公開する要素だけであることに注意してください。Note that the DataSet schema only needs to match the elements from the XmlDataDocument that you want to expose using the DataSet.

    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");  
    

    データが含まれる DataSet と同期されている XmlDataDocument を読み込むことはできません。You cannot load an XmlDataDocument if it is synchronized with a DataSet that contains data. 読み込もうとすると例外がスローされます。An exception will be thrown.

  • 新しい XmlDataDocument を作成して、XML ドキュメントからこの XmlDataDocument を読み込みます。次に、XmlDataDocumentDataSet プロパティを使用してデータのリレーショナル ビューにアクセスします。Create a new XmlDataDocument and load it from an XML document, and then access the relational view of the data using the DataSet property of the XmlDataDocument. DataSet を使用して XmlDataDocument のデータを表示するには、DataSet のスキーマを設定する必要があります。You need to set the schema of the DataSet before you can view any of the data in the XmlDataDocument using the DataSet. この場合も、DataSet スキーマのテーブル名と列名が、同期をとる XML 要素の名前と一致している必要があります。Again, the table names and column names in your DataSet schema must match the names of the XML elements that you want them synchronized with. この名前の一致では、大文字と小文字が区別されます。This matching is case-sensitive.

    次のコード例では、XmlDataDocument のデータのリレーショナル ビューにアクセスする方法を示します。The following code example shows how to access the relational view of the data in an 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 ドキュメントが完全に保持されることです。Another advantage of synchronizing an XmlDataDocument with a DataSet is that the fidelity of an XML document is preserved. ReadXml を使用して XML ドキュメントのデータを DataSet に格納すると、WriteXml を使用してデータが XML ドキュメントとして書き込まれるときに、この XML ドキュメントと元の XML ドキュメントが大幅に異なる場合があります。If the DataSet is populated from an XML document using ReadXml, when the data is written back as an XML document using WriteXml it may differ dramatically from the original XML document. これは、DataSet では XML ドキュメントから読み込んだ空白などの書式設定や、要素順序などの階層情報が維持されないためです。This is because the DataSet does not maintain formatting, such as white space, or hierarchical information, such as element order, from the XML document. DataSet には、XML ドキュメントで無視された要素も含まれていません。これは、これらの要素が Dataset のスキーマに一致しないためです。The DataSet also does not contain elements from the XML document that were ignored because they did not match the schema of the Dataset. XmlDataDocumentDataSet と同期することで、元の XML ドキュメントの書式設定要素や階層要素の構造が XmlDataDocument で維持され、DataSet には DataSet に適切なデータおよびスキーマ情報だけが含まれます。Synchronizing an XmlDataDocument with a DataSet allows the formatting and hierarchical element structure of the original XML document to be maintained in the XmlDataDocument, while the DataSet contains only data and schema information appropriate to the DataSet.

DataSetXmlDataDocument と同期する場合、DataRelation オブジェクトが入れ子かどうかによって同期結果が異なります。When synchronizing a DataSet with an XmlDataDocument, results may differ depending on whether or not your DataRelation objects are nested. 詳しくは、「DataRelation の入れ子化」をご覧ください。For more information, see Nesting DataRelations.

このセクションの内容In This Section

DataSet と XmlDataDocument の同期Synchronizing a DataSet with an XmlDataDocument
最小限のスキーマが含まれており、厳密に型指定された DataSetXmlDataDocument と同期させる方法を示します。Demonstrates synchronizing a strongly typed DataSet, with minimal schema, with an XmlDataDocument.

DataSet に対する XPath クエリの実行Performing an XPath Query on a DataSet
DataSet の内容に対して XPath クエリを実行する方法を示します。Demonstrates performing an XPath query on the contents of a DataSet.

DataSet への XSLT 変換の適用Applying an XSLT Transform to a DataSet
DataSet の内容に XSLT 変換を適用する方法を示します。Demonstrates applying an XSLT transform to the contents of a DataSet.

DataSet での XML の使用Using XML in a DataSet
DataSet の内容を XML データとして読み込んで永続化する方法など、DataSet でデータ ソースとして XML と対話する方法を説明します。Describes how the DataSet interacts with XML as a data source, including loading and persisting the contents of a DataSet as XML data.

DataRelation の入れ子化Nesting DataRelations
DataSet の内容を XML データとして表現する場合における、入れ子になった DataRelation オブジェクトの重要性について説明します。また、このようなリレーションを作成する方法について説明します。Discusses the importance of nested DataRelation objects when representing the contents of a DataSet as XML data, and describes how to create these relations.

DataSet、DataTable、および DataViewDataSets, DataTables, and DataViews
DataSet について説明し、DataSet を使用したアプリケーション データの管理方法と、DataSet を使用したデータ ソース (リレーショナル データベースや XML など) との対話方法について説明します。Describes the DataSet and how to use it to manage application data and to interact with data sources including relational databases and XML.

XmlDataDocument
XmlDataDocument クラスに関するリファレンス情報が含まれます。Contains reference information about the XmlDataDocument class.

関連項目See also