2014/05/10

【C#】DataGridViewのデータをXMLに保存・読み込みする


以前にC#で設定をXMLファイルに保存・読み込みするという記事を書いたが、今回はちょっと変わってXMLからDataGridViewに読み込み、DataGridViewからXMLに保存する方法をまとめていく。

まずはWindowsフォームの準備から。
以下の表にしたがってフォームにコントロールを設置する。

コントロール 名前 プロパティ 設定値
TextBox textBox1 Multiline true
ScrollBars Both
DataGridView dataGridView1
Button ReadXmlButton Text Read XML
Button WriteXmlButton Text Write XML
Button ShowSchemaButton Text Show Schema
DataSet SlipsDataSet DataSetName SlipsDataSet



設置・設定をしたのがこちら
ここからXMLの保存と読み込みを実装する。





XMLの準備



まずは読み込むための下地を作成する。
ちなみに内容は伝票(ID、注文日、商品名、価格、数量)を使う。

<slips_table>
    <slips>
        <sl_id>S0001</sl_id>
        <sl_date>2014/04/01</sl_date>
        <sl_item>鉛筆</sl_item>
        <sl_price>100</sl_price>
        <sl_qty>10</sl_qty>
    </slips>
    <slips>
        <sl_id>S0002</sl_id>
        <sl_date>2014/04/10</sl_date>
        <sl_item>消しゴム</sl_item>
        <sl_price>120</sl_price>
        <sl_qty>5</sl_qty>
    </slips>
    <slips>
        <sl_id>S0003</sl_id>
        <sl_date>2014/04/15</sl_date>
        <sl_item>ノート</sl_item>
        <sl_price>180</sl_price>
        <sl_qty>3</sl_qty>
    </slips>
</slips_table>


XMLからDataGridViewに読み込む



フォームデザイナの「Read XML」ボタンをダブルクリックして、イベントを作成する。

中身は以下のとおり。

public static readonly string FILE_PATH = @"D:\ExperimentForm\slip_list.xml";

private void ReadXmlButton_Click(object sender, EventArgs e)
{
    SlipsDataSet.ReadXml(FILE_PATH);

    dataGridView1.DataSource = SlipsDataSet;
    dataGridView1.DataMember = "slips";
}
FILE_PATHは任意の場所を指定する。
7行目のDataSourceは、データセットの名前(ここではSlipsDataSet)を指定する。
8行目のDataMemberは、XMLファイルのデータソースのリスト(ここでは<slips>)を指定する。


実行すると以下のようにXMLのデータがDataGridViewに読み込まれる。




DataGridViewからXMLに保存する



フォームデザイナの「Write XML」ボタンをダブルクリックして、イベントを作成する。

中身は以下のとおり。

private void WriteXmlButton_Click(object sender, EventArgs e)
{
    SlipsDataSet.WriteXml(FILE_PATH);
}

たった1行だけ!!
説明する余地もない…。



XMLスキーマを表示する



XML Schema(XMLスキーマ)は、XML文書の論理的構造を定義する為に開発されたスキーマ言語の一つ。
引用元:XML Schema - Wikipedia
スキーマとは、本来「データベースの構造定義」のこと。
RDBの場合はテーブル各項目のデータ型などを定義したものを指すらしい。

要するにDataGridViewに読み込んだデータの構造を表示するということ。


フォームデザイナの「Show Schema」をダブルクリックして、イベントを作成する。

中身は以下のとおり。

private void ShowSchemaButton_Click(object sender, EventArgs e)
{
    System.IO.StringWriter swXML = new System.IO.StringWriter();

    SlipsDataSet.WriteXmlSchema(swXML);
    textBox1.Text = swXML.ToString();
}

実行すると以下のようになる。




参考サイト



MSDN - データセットへの XML データの読み込み



以上

0 件のコメント :

コメントを投稿