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 表現で、それぞれの親子のリレーションを持つ子行が関連する親要素内に入れ子になるようにします。このような入れ子の状態にするには、DataSet へ DataRelation を追加するときに、DataRelation の Nested プロパティを 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 は要素名になり、列の内容は要素のテキストとして書き込まれます。次に例を示します。
|
Attribute |
列が、現在の行の XML 要素の XML 属性として書き込まれます。このとき、ColumnName は属性名になり、列の内容は属性の値として書き込まれます。次に例を示します。
|
SimpleContent |
列の内容が、現在の行の XML 要素のテキストとして書き込まれます。次に例を示します。
Element 列または入れ子になったリレーションのあるテーブルの列に対しては、SimpleContent を設定できません。 |
Hidden |
列は XML 出力に書き込まれません。 |
参照
概念
XSD としての DataSet スキーマ情報の書き込み (ADO.NET)