2008年02月17日

LINQ to XML その11−配列へ変換

   このエントリーをはてなブックマークに追加 Clip to Evernote
LINQ to XML C#でXMLから配列へ変換

LINQ to XML その10」まで書いて、いちおう終わりのつもりだったのだけど、まだ書くべきことが残っていたので、その11ということで記事をアップします。

LINQ to XMLって、Element("Hoge") とか、データを指定するのにいちいち文字列を指定しなくてはいけないので、LINQ to Objectと比べて面倒です。
だったら、配列にしてしまったほうが扱いやすいのでは? ということで、XMLのデータを配列に変換するC#のコードです。

 XDocument xdoc = XDocument.Load("people.xml");
var q = from x in xdoc.Root.Elements()
select new Person {
Name = (string)x.Element("Name"),
Age = (int)x.Element("Age"),
IsReal = (bool?)x.Attribute("IsReal") ?? true
};
Person[] ps = q.ToArray();
foreach (var p in ps) {
Console.WriteLine("{0} {1} {2}", p.Name, p.Age, p.IsReal);

}

たったこれだけで出来るってすごくないですか?

入力するXMLファイルの中身は、「LINQ to XML その10」を見て下さい。


この記事へのコメント
LINQ to XML便利そうだけれど、
DataSetのTable間のリレーションより
汎用的なものと考えていいのでしょうか。

またLINQ to XML その10のリンク先で1〜9までの
リンクがありますが、
リンク先がないとのことで、
うまく飛べませんので
修正しておいていただければと思います。
Posted by おりん at 2008年03月12日 11:14
DataSetのTable間のリレーションと LINQ to XML を比較するのは難しいですが、LINQは、ほぼ同じ考えで、データベース、XML、メモリ内オブジェクトなどのデータ取得が可能です。なので、対象となるデータ別に取得方法を変える必要がないので、とえも便利だと思います。

リンクの件は、後日修正しておきます。
しばらく留守にするので、2週間ほどお時間をください。
なお、ページ左上の検索ボックスで、"LINQ to XML"を検索してもらえれば該当ページを開くことができます。
宜しくお願いします。
Posted by Gushwell at 2008年03月12日 20:42
遅くなりましたが、リンク修正しておきました。
Posted by Gushwell at 2008年03月29日 22:12
LINQ to XMLその12
http://blog.livedoor.jp/gushwell/archives/51411328.html
Posted by LINQ to XMLその12 at 2008年04月19日 20:20
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51406339