2012年8月19日日曜日

[C#] LINQでXMLの内容をクラスにぶち込む

XMLをクラスに入れて扱いやすくしたかった。


LINQ to XML についての参考サイト
http://code.msdn.microsoft.com/windowsdesktop/22-LINQ-to-XML-XML-c2f6f04f

上のサイトのコード例を少し変えてクラスにぶち込むようにした。


こういうクラスを用意して

public class Person
{
    public string ID { get; set; }
    public string Name { get; set; }
}


XMLの要素をクラスにぶち込む

// XML文字列
string xmldoc =
  @"<?xml version='1.0'?>
<names xmlns='http://www.piedey.co.jp/example/linqtoxml201003'>
  <name id='M0001'>一郎</name>
  <name id='M0002'>次郎</name>
  <name id='F0001'>花子</name>
</names>
";

// XElementを取得. XElementにするとLINQで扱えるようになる
// (名前空間も System.Xml.Linq.XElement となってる)
var doc = XElement.Parse(xmldoc);

// 名前空間
XNamespace ex =
    "http://www.piedey.co.jp/example/linqtoxml201003";

// LINQでクラスオブジェクトに入れる
IEnumerable<Person> persons =
    from n in doc.Elements(ex + "name")
    select new Person()
    {
     ID = n.Attribute("id").Value
     ,
     Name = n.Value
    };


XmlDocumentにして要素をくるくる回して解析してた事を考えると
超楽ちん!うっひょー!

0 件のコメント:

コメントを投稿