そこでダミーデータをさくっと展開するためのサンプルコードを置いておきます。(解説っていうよりサンプルコードです)
テストとか、とりあえずなんか動かしてみるのにそれっぽいデータを用意するときに使えると便利です。
ダミーデータを準備する
今回使用するダミーデータは、なんちゃって個人情報さんから引っ張ってきます。なんちゃって個人情報は、テスト用の個人情報をダミーで生成してくれるというオンラインサービスです。(つい最近知りました)
なんちゃって個人情報
http://kazina.com/dummy/
XMLにして出力件数を指定。今回の出力件数は200くらいにしました。
なんちゃって生成をクリック。
はい、XMLができました。
ファイルの名前を付けて保存からXMLを保存します。
※ちなみに、GoogleChromeでやるとXML作成まではやってくれましたが、そのままファイル保存すると失敗してしまいました。HTMLのなれの果てのようなファイルしかできないときは、IEでやってみてください。
↑失敗です
ダミーデータを展開する
生成されるXMLはrecordの繰り返しで構成されています。1つのrecordは下のようになっています。構成は生成時のオプションによって変わりますので注意。
<record> <name>矢田 桃子</name> <ruby>やだ ももこ</ruby> <mail>yada_momoko@example.com</mail> <sex>女</sex> <age>68</age> <birthday>1947/1/16</birthday> <married>既婚</married> <prefecture>大阪府</prefecture> <keitai>080-1669- 474</keitai> <carrier>ドコモ</carrier> <curry>左ルー・別口派</curry> </record>
DataSetのReadXmlメソッドつかって一発で読み込んでもいいんですが、XMLを展開して読み込むことにします。
/* using System.Xml.Linq; using System.Xml.XPath; using System.Data; using System.IO; */ // なんちゃって個情報をDataTableに展開する private DataTable LoadDummyData(string dummyXml) { DataTable table = new DataTable(); string[] columns = new string[] { "name", "ruby", "mail", "sex", "age", "birthday", "married","prefecture","keitai", "carrier","curry" }; // ①DataTableのカラムをつくる table.Columns.AddRange(columns.Select(n => new DataColumn(n)).ToArray()); // ②Xml読み込み準備 StreamReader reader = new StreamReader(dummyXml, System.Text.Encoding.GetEncoding("shift-jis")); XDocument xDoc = XDocument.Load(reader); // ③recordエレメントを抽出 IEnumerable<XElement> records = xDoc.XPathSelectElements("//record"); foreach (XElement record in records) { DataRow row = table.NewRow(); // ④DataRowに値をセットしていく columns.ToList().ForEach(n => row[n] = record.XPathSelectElement("./" + n + "").Value); table.Rows.Add(row); } return table; } // DataSetから読み込む方法 private DataTable LoadDummy(string dummyXml) { StreamReader reader = new StreamReader(dummyXml, System.Text.Encoding.GetEncoding("shift-jis")); DataSet ds = new DataSet(); ds.ReadXml(reader); return ds.Tables[0]; }
ダミーデータを使ってみる
使ってみましょう。GridViewのDataSourceにセットして、DataBindすれば。
string dummyXml = Path.Combine(this.Server.MapPath("dummy_cgi.xml")); GridView1.DataSource = this.LoadDummyData(dummyXml); GridView1.DataBind();はい、このとおり。
以上です。
0 件のコメント :
コメントを投稿