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 出力に書き込まれません。 |