次の方法で共有


XML データとしての DataSet コンテンツの書き込み

ADO.NET では、スキーマの有無にかかわらず、 DataSetの XML 表現を記述できます。 スキーマ情報が 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を書き込むには、WriteXml メソッドを使用します。 WriteXml に渡す最初のパラメーターは、XML 出力の宛先です。 たとえば、ファイル名、 System.IO.TextWriter オブジェクトなどを含む文字列を渡します。 XmlWriteMode の省略可能な 2 番目のパラメーターを渡して、XML 出力の書き込み方法を指定できます。

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

XmlWriteMode オプション 説明
IgnoreSchema XML スキーマを使用せずに、 DataSet の現在の内容を XML データとして書き込みます。 これが既定値です。
WriteSchema リレーショナル構造をインライン XML スキーマとして使用して、 DataSet の現在の内容を XML データとして書き込みます。
DiffGram 元の値と現在の値を含め、 DataSet 全体を DiffGram として書き込みます。 詳細については、「 DiffGrams」を参照してください。

DataSet オブジェクトを含むの XML 表現を書き込む場合、ほとんどの場合、結果の XML には、関連する親要素内で入れ子になった各リレーションシップの子行が必要になります。 これを実現するには、DataRelationに追加するときに、Nestedプロパティをtrueに設定します。 詳しくは、「DataRelation の入れ子化」をご覧ください。

DataSetの XML 表現をファイルに書き込む方法の 2 つの例を次に示します。 最初の例では、結果の 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 要素、属性、およびテキストへの列のマッピング

DataColumn オブジェクトの ColumnMapping プロパティを使用して、テーブルの列を XML で表す方法を指定できます。 次の表は、テーブル列の ColumnMapping プロパティのさまざまな MappingType 値と、結果の XML を示しています。

マッピングタイプの値 説明
要素 これが既定値です。 列は XML 要素として書き込まれます。ColumnName は要素の名前であり、列の内容は要素のテキストとして書き込まれます。 例えば次が挙げられます。

<ColumnName>Column Contents</ColumnName>
属性 列は現在の行の XML 要素の XML 属性として書き込まれます。ColumnName は属性の名前であり、列の内容は属性の値として書き込まれます。 例えば次が挙げられます。

<RowElement ColumnName="Column Contents" />
SimpleContent 列の内容は、現在の行の XML 要素にテキストとして書き込まれます。 例えば次が挙げられます。

<RowElement>Column Contents</RowElement>

Element 列または入れ子になったリレーションシップを持つテーブルの列には SimpleContent を設定できないことに注意してください。
隠れた 列は XML 出力に書き込まれません。

こちらも参照ください