&tag(LINQtoXML);
&tag(XML, LINQtoXML);
*目次 [#ybc772be]
#contents
*参考情報 [#vb58063a]
-[[困ったときにそのまま使える LINQ to XML コードサンプル 18 パターン [1/2] - Web/DB プログラミング徹底解説:http://keicode.com/dotnet/linq-to-xml-101.php]]
-[[困ったときにそのまま使える LINQ to XML コードサンプル 18 パターン [2/2] - Web/DB プログラミング徹底解説:http://keicode.com/dotnet/linq-to-xml-101-2.php]]
-[[LINQ to XML 備忘録2 X* クラスの使用方法について - ComponentGeek Article:http://handcraft.blogsite.org/ComponentGeek/ShowArticle/72.aspx]]
-[[XElement]]

*設定 [#h7d7acaa]
参照の追加で、System.XML, System.Xml.Linqを追加する。
-参照の追加で、System.XML, System.Xml.Linqを追加する。

*読み込み [#e9a01a49]

**サンプルXML [#ad6214ad]
-次の内容のファイルをpersons.xmlとして保存する。
#pre{{
<?xml version="1.0" encoding="utf-8" ?>
<PersonList>
  <Persons id="soccer">
    <Person>
      <Name>中田英寿</Name>
      <Age>34</Age>
    </Person>
    <Person>
      <Name>中村俊輔</Name>
      <Age>33</Age>
    </Person>
  </Persons>
  <Persons id="baseball">
    <Person>
      <Name>ダルビッシュ</Name>
      <Age>25</Age>
    </Person>
    <Person>
      <Name>イチロー</Name>
      <Age>36</Age>
    </Person>
  </Persons>
</PersonList>

}}
**ファイルから読み込む [#y4e70a9c]
-XDocument.Load(XMLファイル名)を使用する
 var xdoc = XDocument.Load("../../persons.xml");

*要素の選択 [#ibca1b47]
**子孫の要素を選択する [#j9bff8df]
-Descendants(要素名)を使用すると階層深くにある要素も一気に選択できる。
#pre{{
            var persons = xdoc.Descendants("Person");
            foreach (var person in persons)
            {
                Debug.WriteLine("##### start #####");
                Debug.WriteLine(person.ToString());
                Debug.WriteLine("");
            }
}}
-出力結果
#pre{{
##### start #####
<Person>
  <Name>中田英寿</Name>
  <Age>34</Age>
</Person>

##### start #####
<Person>
  <Name>中村俊輔</Name>
  <Age>33</Age>
</Person>

##### start #####
<Person>
  <Name>ダルビッシュ</Name>
  <Age>25</Age>
</Person>

##### start #####
<Person>
  <Name>イチロー</Name>
  <Age>36</Age>
</Person>
}}

**属性で選択する [#a9f2c176]
-Attribute("属性")を使って要素を選択することができる。サッカー選手のリストを取得する場合次のようになる。
#pre{{
            var personsCollection = (
                from p in xdoc.Descendants("Persons")
                where p.Attribute("id").Value == "soccer"
                select p);
            foreach (var persons in personsCollection)
            {
                Debug.WriteLine(persons.ToString());
            }
}}
-出力結果
#pre{{
##### start #####
<Persons id="soccer">
  <Person>
    <Name>中田英寿</Name>
    <Age>34</Age>
  </Person>
  <Person>
    <Name>中村俊輔</Name>
    <Age>33</Age>
  </Person>
</Persons>

}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS