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」ボタンをダブルクリックして、イベントを作成する。

中身は以下のとおり。

// 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」ボタンをダブルクリックして、イベントを作成する。

中身は以下のとおり。

// 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」をダブルクリックして、イベントを作成する。

中身は以下のとおり。

// XMLスキーマの読み込み
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 件のコメント :

コメントを投稿