以前に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 件のコメント :
コメントを投稿