Tag: XML LINQtoXML

目次

参考情報

設定

  • 参照の追加で、System.XML, System.Xml.Linqを追加する。

読み込み

サンプルXML

  • 次の内容のファイルをpersons.xmlとして保存する。
    <?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>
    
    

ファイルから読み込む

  • XDocument.Load(XMLファイル名)を使用する
    var xdoc = XDocument.Load("../../persons.xml");

要素の選択

子孫の要素を選択する

  • Descendants(要素名)を使用すると階層深くにある要素も一気に選択できる。
                var persons = xdoc.Descendants("Person");
                foreach (var person in persons)
                {
                    Debug.WriteLine("##### start #####");
                    Debug.WriteLine(person.ToString());
                    Debug.WriteLine("");
                }
    
  • 出力結果
    ##### 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>
    

属性で選択する

  • Attribute("属性")を使って要素を選択することができる。サッカー選手のリストを取得する場合次のようになる。
                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());
                }
    
  • 出力結果
    ##### start #####
    <Persons id="soccer">
      <Person>
        <Name>中田英寿</Name>
        <Age>34</Age>
      </Person>
      <Person>
        <Name>中村俊輔</Name>
        <Age>33</Age>
      </Person>
    </Persons>
    
    

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-04-13 (水) 16:46:10 (1010d)