XMLデータをDataSetに読み込む方法

目次
はじめに
本項では、XMLファイルのデータをDataSetに直接読み込む方法と、その利用方法についての備忘録です
XMLスキーマの生成
まずはDataSetに読み込む前にXMLスキーマを用意します
<?xml version=“1.0” encoding=“utf-8”>
<xs:schema attributeFormDefault=“unqualified” elementFormDefault=“qualified” xmlns:xs=“http://www.w3.org/2001/XMLSchema” xmlns:msdata=“schemas-microsoft-com:xml-msdata”>
<xs:element name=“Daata” msdata:IsDataset=“true”>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs=“unbounded” name=“SampleTable”>
<xs:complexType>
<xs:sequence>
<xs:element name=“SampleClmn1” type=“xs:string”>
<xs:element name=“SampleClmn2” type=“xs:string”>
<xs:element name=“SampleClmn3” type=“xs:string”>
<xs:element name=“SampleClmn4” type=“xs:string”>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XMLファイルの用意
XMlスキーマを用意したら次にスキーマに沿った構成でデータを用意していきます。
<?xml version=“1.0” encoding=“utf-8”>
<Data>
<SampleTable>
<SampleClmn1>sample1-1</SampleClmn1>
<SampleClmn2>sample1-2</SampleClmn2>
<SampleClmn3>sample1-3</SampleClmn3>
<SampleClmn4>sample1-4</SampleClmn4>
</SampleTable>
<SampleTable>
<SampleClmn1>sample2-1</SampleClmn1>
<SampleClmn2>sample2-2</SampleClmn2>
<SampleClmn3>sample2-3</SampleClmn3>
<SampleClmn4>sample2-4</SampleClmn4>
</SampleTable>
</Data>
DataSetへの直接読み込み
XMLの用意が完了したので、早速DataSetに読み込みます
using(DataSet dtSet = new DataSet())
{
// Read XMLSchema
dtSet.ReadXmlSchema(“C:\sample\samplel.xsd”);
// Read XMLData
dtSet.ReadXml(“C:\sample\sample.xml”);
// テーブル名を指定してDataTableを読み込む
using(DataTable dt = dtSet.Tables[“SampleTable”])
{
for(int i = 0; i < dt.Rows.Count; i++)
{
Console.WriteLine(dt.Rows[“SampleClmn1”].ToString());
}
}
}
結果は下記の通り
sample1-1
sample2-1
最後に
いかがでしたでしょうか。
DB接続時(本番環境)とテスト用で分けて開発する際に、評価用としてDBを利用できないケースやテスト効率化のためにXMLファイル等で利用する場合もあるかと思います。
その際に、役立ててもらえればと思います。