DataSet 内容の XML データとしての書き込みWriting DataSet Contents as XML Data

ADO.NET では、DataSet の XML 表現を記述することができます。このとき、{2} にスキーマが含まれていても、含まれていなくてもかまいません。In ADO.NET you can write an XML representation of a DataSet, with or without its schema. XML にインラインで含まれているスキーマ情報は、XML スキーマ定義言語 (XSD) を使用して記述されています。If schema information is included inline with the XML, it is written using the XML Schema definition language (XSD). スキーマには、リレーション定義および制約定義と、DataSet のテーブル定義が含まれています。The schema contains the table definitions of the DataSet as well as the relation and constraint definitions.

DataSet が XML データとして書き込まれると、DataSet の行は現在のバージョンで書き込まれます。When a DataSet is written as XML data, the rows in the DataSet are written in their current versions. ただし、行の現在の値と元の値の両方を含めるには、DataSet を DiffGram として書き込みます。However, the DataSet can also be written as a DiffGram so that both the current and the original values of the rows will be included.

DataSet の XML 表現は、ファイル、ストリーム、 XmlWriter、または文字列に書き込むことができます。The XML representation of the DataSet can be written to a file, a stream, an XmlWriter, or a string. 複数の書き込み先があることから、DataSet の XML 表現の転送方法を柔軟に変更できます。These choices provide great flexibility for how you transport the XML representation of the DataSet. DataSet の XML 表現を文字列として取得するには、次の例に示すように、 GetXmlメソッドを使用します。To obtain the XML representation of the DataSet as a string, use the GetXml method as shown in the following example.

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

GetXmlは、スキーマ情報のない DataSet の XML 表現を返します。GetXml returns the XML representation of the DataSet without schema information. (XML スキーマとして) DataSet から文字列にスキーマ情報を書き込むには、 Getxmlschemaを使用します。To write the schema information from the DataSet (as XML Schema) to a string, use GetXmlSchema.

ファイル、ストリーム、またはXmlWriterDataSet を書き込むには、 WriteXmlメソッドを使用します。To write a DataSet to a file, stream, or XmlWriter, use the WriteXml method. WriteXmlに渡す最初のパラメーターは、XML 出力の変換先です。The first parameter you pass to WriteXml is the destination of the XML output. たとえば、ファイル名を含む文字列、または、system.servicemodel オブジェクトなどを渡します。For example, pass a string containing a file name, a System.IO.TextWriter object, and so on. XmlWriteModeの省略可能な2番目のパラメーターを渡して、XML 出力の書き込み方法を指定できます。You can pass an optional second parameter of an XmlWriteMode to specify how the XML output is to be written.

次の表は、 XmlWriteModeのオプションを示しています。The following table shows the options for XmlWriteMode.

XmlWriteMode のオプションXmlWriteMode option 説明Description
IgnoreSchemaIgnoreSchema DataSet の現在の内容を XML スキーマを含まない XML データとして書き込みます。Writes the current contents of the DataSet as XML data, without an XML Schema. 既定値です。This is the default.
WriteSchemaWriteSchema DataSet の現在の内容を XML データとして書き込みます。このとき、リレーショナル構造がインライン XML スキーマとして書き込まれます。Writes the current contents of the DataSet as XML data with the relational structure as inline XML Schema.
DiffGramDiffGram 元の値と現在の値を含め、DataSet 全体を DiffGram として書き込みます。Writes the entire DataSet as a DiffGram, including original and current values. 詳細については、「 Diffgram グラム」を参照してください。For more information, see DiffGrams.

DataRelationオブジェクトを含む DataSet の xml 表現を記述する場合、ほとんどの場合、その結果の xml に、関連する親要素内に入れ子になった各リレーションシップの子行が含まれるようにする必要があります。When writing an XML representation of a DataSet that contains DataRelation objects, you will most likely want the resulting XML to have the child rows of each relation nested within their related parent elements. これを実現するには 、datarelation を DataSetに追加するときに、 datarelationNestedプロパティをtrueに設定します。To accomplish this, set the Nested property of the DataRelation to true when you add the DataRelation to the DataSet. 詳細については、「 datarelation の入れ子」を参照してください。For more information, see Nesting DataRelations.

DataSet の XML 表現をファイルに書き込む方法の2つの例を次に示します。The following are two examples of how to write the XML representation of a DataSet to a file. 最初の例では、結果の XML のファイル名を文字列としてWriteXmlに渡します。The first example passes the file name for the resulting XML as a string to WriteXml. 2番目の例では、system.servicemodel オブジェクトを渡します。The second example passes a System.IO.StreamWriter object.

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 要素、属性、およびテキストへの列の割り当てMapping Columns to XML Elements, Attributes, and Text

テーブルの列を XML で表現する方法は、 DataColumnオブジェクトのColumnMappingプロパティを使用して指定できます。You can specify how a column of a table is represented in XML using the ColumnMapping property of the DataColumn object. 次の表は、テーブルの列のColumnMappingプロパティのさまざまなmappingtype値と、結果の XML を示しています。The following table shows the different MappingType values for the ColumnMapping property of a table column, and the resulting XML.

MappingType の値MappingType value 説明Description
要素Element 既定値です。This is the default. 列が XML 要素として書き込まれます。このとき、ColumnName は要素名になり、列の内容は要素のテキストとして書き込まれます。The column is written as an XML element where the ColumnName is the name of the element and the contents of the column are written as the text of the element. 例 :For example:

<ColumnName>Column Contents</ColumnName>
属性Attribute 列が、現在の行の XML 要素の XML 属性として書き込まれます。このとき、ColumnName は属性名になり、列の内容は属性の値として書き込まれます。The column is written as an XML attribute of the XML element for the current row where the ColumnName is the name of the attribute and the contents of the column are written as the value of the attribute. 例 :For example:

<RowElement ColumnName="Column Contents" />
SimpleContentSimpleContent 列の内容が、現在の行の XML 要素のテキストとして書き込まれます。The contents of the column are written as text in the XML element for the current row. 例 :For example:

<RowElement>Column Contents</RowElement>

要素列または入れ子になったリレーションを含むテーブルの列には、 SimpleContentを設定できないことに注意してください。Note that SimpleContent cannot be set for a column of a table that has Element columns or nested relations.
[非表示]Hidden 列は XML 出力に書き込まれません。The column is not written in the XML output.

参照See also