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

はじめに

UTなど、テストでXMLファイルでデータを用意することも多々あるかと思いますが、今回は、この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ファイル等で利用する場合もあるかと思います。
その際に、役立ててもらえればと思います。