DataSet 内容の XML データとしての書き込み (ADO.NET)

更新 : November 2007

ADO.NET では、DataSet の XML 表現を記述することができます。このとき、DataSet にスキーマが含まれていても、含まれていなくてもかまいません。XML にインラインで含まれているスキーマ情報は、XML スキーマ定義言語 (XSD) を使用して記述されています。スキーマには、リレーション定義および制約定義と、DataSet のテーブル定義が含まれています。

DataSet が XML データとして書き込まれると、DataSet の行は現在のバージョンで書き込まれます。ただし、行の現在の値と元の値の両方を含めるには、DataSet を DiffGram として書き込みます。

DataSet の XML 表現は、ファイル、ストリーム、XmlWriter、または文字列に書き込むことができます。複数の書き込み先があることから、DataSet の XML 表現の転送方法を柔軟に変更できます。DataSet の XML 表現を文字列として取得するには、次の例に示すように GetXml メソッドを使用します。

Dim xmlDS As String = custDS.GetXml()
string xmlDS = custDS.GetXml();

GetXml は、スキーマ情報が含まれていない DataSet の XML 表現を返します。DataSet (XML スキーマ) のスキーマ情報を文字列に書き込むには、GetXmlSchema を使用します。

DataSet をファイル、ストリーム、または XmlWriter に書き込むには、WriteXml メソッドを使用します。WriteXml に渡す 1 番目のパラメータは、XML の出力先です。たとえば、ファイル名や System.IO.TextWriter オブジェクトなどが含まれている文字列を渡します。XmlWriteMode の 2 番目のパラメータは、XML 出力の書き込み方法を指定します。このパラメータは省略できます。

XmlWriteMode のオプションを次の表に示します。

XmlWriteMode のオプション

説明

IgnoreSchema

DataSet の現在の内容を XML スキーマを含まない XML データとして書き込みます。これは、既定の設定です。

WriteSchema

DataSet の現在の内容を XML データとして書き込みます。このとき、リレーショナル構造がインライン XML スキーマとして書き込まれます。

DiffGram

元の値と現在の値を含め、DataSet 全体を DiffGram として書き込みます。詳細については、「DiffGrams (ADO.NET)」を参照してください。

DataRelation オブジェクトが格納されている DataSet の XML 表現を書き込むときには、多くの場合、この XML 表現で、それぞれの親子のリレーションを持つ子行が関連する親要素内に入れ子になるようにします。このような入れ子の状態にするには、DataSetDataRelation を追加するときに、DataRelationNested プロパティを true に設定します。詳細については、「DataRelation の入れ子化 (ADO.NET)」を参照してください。

DataSet の XML 表現をファイルに書き込む 2 つの例を次に示します。1 番目の例では、書き込まれる XML のファイル名が文字列として WriteXml へ渡されます。2 番目の例では、System.IO.StreamWriter オブジェクトが渡されます。

custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema)
custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema);
Dim xmlSW As System.IO.StreamWriter = New System.IO.StreamWriter("Customers.xml")
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema)
xmlSW.Close()
System.IO.StreamWriter xmlSW = new System.IO.StreamWriter("Customers.xml");
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema);
xmlSW.Close();

XML 要素、属性、およびテキストへの列の割り当て

テーブルの列を XML 形式で表す方法を指定するには、DataColumn オブジェクトの ColumnMapping プロパティを使用します。テーブル列の ColumnMapping プロパティの MappingType 値と、各値を適用した結果の XML の一覧を次の表に示します。

MappingType の値

説明

Element

これは、既定の設定です。列が XML 要素として書き込まれます。このとき、ColumnName は要素名になり、列の内容は要素のテキストとして書き込まれます。次に例を示します。

<ColumnName>Column Contents</ColumnName>

Attribute

列が、現在の行の XML 要素の XML 属性として書き込まれます。このとき、ColumnName は属性名になり、列の内容は属性の値として書き込まれます。次に例を示します。

<RowElement ColumnName="Column Contents" />

SimpleContent

列の内容が、現在の行の XML 要素のテキストとして書き込まれます。次に例を示します。

<RowElement>Column Contents</RowElement>

Element 列または入れ子になったリレーションのあるテーブルの列に対しては、SimpleContent を設定できません。

Hidden

列は XML 出力に書き込まれません。

参照

概念

DiffGrams (ADO.NET)

DataRelation の入れ子化 (ADO.NET)

XSD としての DataSet スキーマ情報の書き込み (ADO.NET)

その他の技術情報

DataSet での XML の使用 (ADO.NET)

DataSets、DataTables、および DataViews (ADO.NET)