XML とリレーショナル データおよび ADO.NET との統合XML Integration with Relational Data and ADO.NET

XmlDocument の派生クラスである XmlDataDocument クラスには XML データが格納されます。The XmlDataDocument class is a derived class of the XmlDocument, and contains XML data. XmlDataDocument の利点は、リレーショナル データと階層データとを仲介できることです。The advantage of the XmlDataDocument is that it provides a bridge between relational and hierarchical data. DataSet に連結できるのは XmlDocument であり、どちらのクラスも、それぞれが格納しているデータが変更されたときに、変更内容の同期をとることができます。It is an XmlDocument that can be bound to a DataSet and both classes can synchronize changes made to data contained in the two classes. DataSet に連結した XmlDocument では XML をリレーショナル データと統合できるため、データ表現は XML でもリレーショナル形式でもかまいません。An XmlDocument that is bound to a DataSet allows XML to integrate with relational data, and you do not have to have your data represented as either XML or in a relational format. 両方の処理ができ、一方のデータ表現だけに制限されることもありません。You can do both and not be constrained to a single representation of the data.

2 つの形式でデータが使用できる利点は次のとおりです。The benefits of having data available in two views are:

  • XML ドキュメントの構造部分はデータセットに対応付けることができ、効率的な格納、インデックス付け、および検索ができる。The structured portion of an XML document can be mapped to a dataset, and be efficiently stored, indexed, and searched.

  • リレーション形式で格納された XML データに対して、カーソル モデルを使用して、効率的な変換、検証、および移動ができる。Transformations, validation, and navigation can be done efficiently through a cursor model over the XML data that is stored relationally. XmlDocument モデルに XML が格納されている場合よりも、リレーショナル構造の方が効率的に処理できる場合があります。At times, it can be done more efficiently against relational structures than if the XML is stored in an XmlDocument model.

  • DataSet に XML の一部を格納できる。The DataSet can store a portion of the XML. XPath または XslTransform を使用して、目的の要素や属性だけを DataSet に格納できます。That is, you can use XPath or XslTransform to store to a DataSet only those elements and attributes of interest. この場合は、抽出された部分的なデータに対して変更を行い、その変更を XmlDataDocument 内のデータに反映させることができます。From there, changes can be made to the smaller, filtered subset of data, with the changes propagating to the larger data in the XmlDataDocument.

SQL サーバーから DataSet に読み込まれたデータを変換することもできます。You can also run a transform over data that was loaded into the DataSet from SQL Server. また、.NET Framework のクラスの形式で管理されている WinForm および WebForm のコントロールを、XML 入力ストリームからデータを読み込んだ DataSet に連結することもできます。Another option is to bind .NET Framework classes-style-managed WinForm and WebForm controls to a DataSet that was populated from an XML input stream.

XslTransform のサポートの他に、XmlDataDocument は、リレーショナル データに対する XPath クエリと検証もサポートします。In addition to supporting XslTransform, an XmlDataDocument exposes relational data to XPath queries and validation. 基本的には、すべての XML サービスをリレーショナル データで利用でき、コントロールの連結やコード生成などのすべてのリレーショナル機能を XML に基づく構造化データで、XML の厳密性を損なうことなく利用できます。Basically, all XML services are available over relational data, and relational facilities, such as control binding, codegen, and so on, are available over a structured projection of XML without compromising XML fidelity.

XmlDataDocumentXmlDocument から継承されているため、W3C DOM が実装されています。Because XmlDataDocument is inherited from an XmlDocument, it provides an implementation of the W3C DOM. XmlDataDocument は、DataSet に関連付けられており、そのデータの一部を格納していますが、XmlDocument として使用する場合に制限や特別な対応が必要になることはありません。The fact that the XmlDataDocument is associated with, and stores a subset of its data within, a DataSet does not restrict or alter its use as an XmlDocument in any way. XmlDocument を使用しているコードは、XmlDataDocument を使用する場合でも、修正せずに動作させることができます。Code written to consume an XmlDocument works unaltered against an XmlDataDocument. DataSet は、テーブル、列、リレーション、および制約を定義することで、データをリレーショナル形式で提示できる、スタンドアロンかつインメモリのユーザー データ ストアです。The DataSet provides the relational view of the same data by defining tables, columns, relations, and constraints, and is a stand-alone, in-memory user data store.

XML データと DataSet の関係と、XML データと XmlDataDocument の関連との違いを次の図に示します。The following illustration shows the different associations that XML data has with the DataSet and XmlDataDocument:

XML DataSet との関連の違いを示す図。

この図では、XML データは DataSet に直接読み込むことができ、XML をリレーショナルな方法で直接操作できることが示されています。The illustration shows that XML data can be loaded directly into a DataSet, which allows direct manipulation with XML in the relational manner. また、XML を DOM の派生クラスである XmlDataDocument に読み込み、その後、DataSet と同期させることができることも示されています。Or, the XML can be loaded into a derived class of the DOM, which is the XmlDataDocument, and subsequently loaded and synchronized with the DataSet. DataSetXmlDataDocument は、1 つのデータ セットを基にして同期がとられているため、一方のデータ ストアのデータを変更すると、他方のストアに反映されます。Because the DataSet and XmlDataDocument are synchronized over a single set of data, changes made to the data in one store are reflected in the other store.

XmlDataDocument は、XmlDocument のすべての編集機能と移動機能を継承します。The XmlDataDocument inherits all the editing and navigational features from the XmlDocument. 状況によっては、XML を直接 DataSet に読み込む方法よりも、XmlDataDocument とその継承された機能を使用して DataSet と同期する方法の方が適している場合があります。There are times when using the XmlDataDocument and its inherited features, synchronized with a DataSet, is a more appropriate option than loading XML directly into the DataSet. DataSet にデータを読み込む場合に、どちらの方法を採用すればよいかを判断するための条件を次の表に示します。The following table shows the items to be considered when choosing which method to use to load the DataSet.

XML を DataSet に直接読み込む方がよい場合When to load XML directly into a DataSet XmlDataDocument と DataSet の同期をとる方がよい場合When to synchronize an XmlDataDocument with a DataSet
DataSet のデータに対するクエリで、XPath よりも SQL を使用する方が簡単である。Queries of data in the DataSet are easier using SQL than XPath. DataSet のデータに対して XPath クエリが必要である。XPath queries are needed over data in the DataSet.
ソース XML 内での要素の順序を保つ必要がない。Preservation of element ordering in the source XML is not critical. ソース XML 内での要素の順序を保つ必要がある。Preservation of element ordering in the source XML is critical.
要素間の空白や形式をソース XML で保持する必要がない。White space between elements and formatting does not need to be preserved in the source XML. 空白や形式をソース XML で保持する必要がある。White space and formatting preservation in the source XML is critical.

DataSet に XML を直接読み込んだり、DataSet から XML を書き出す方法については、「XML からの DataSet の読み込み」と「XML データとしての DataSet の書き込み」を参照してください。If loading and writing XML directly into and out of a DataSet addresses your needs, see Loading a DataSet from XML and Writing a DataSet as XML Data.

XmlDataDocument から DataSet にデータを読み込む方法については、Dataset と XML ドキュメントの同期に関するページを参照してください。If loading the DataSet from an XmlDataDocument addresses your needs, see Synchronizing a Dataset with an XML Document.

関連項目See also