LoginSignup
2
1

More than 3 years have passed since last update.

C# XMLファイルから特定の要素を一括取得する

Posted at

やりたいこと

次のようなXMLファイルから、animalsやfishesなどを無視して、nameタグで囲われた要素を一括で取得したいとします。
この場合、Descendantsメソッドが使用できます。

test.xml
<?xml version="1.0" encoding="utf-8"?>
<example>
    <animals>
        <animal>
            <name>cat</name>
        </animal>
        <animal>
            <name>dog</name>
        </animal>
    </animals>
    <fishes>
        <fish>
            <name>tuna</name>
        </fish>
        <fish>
            <name>salmon</name>
        </fish>
    </fishes>
</example>

次のコードのように、Descendants("name")とすることで、XMLの子孫要素からnameを検索し、IEnumerable<XElement>として一括取得できます。

Program.cs
using System;
using System.Collections.Generic;
using System.Xml.Linq;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(@"test.xml");
            IEnumerable<XElement> elems = doc.Descendants("name");
            foreach (XElement elem in elems)
            {
                Console.WriteLine(elem.Value);
            }
        }
    }
}

上記のコードは、取得したあとにforeachで各要素をコンソールに出力しています。出力結果は次のようになります。

cat
dog
tuna
salmon

参考

公式ドキュメント
https://docs.microsoft.com/ja-jp/dotnet/api/system.xml.linq.xcontainer.descendants?view=netcore-3.1#moniker-applies-to

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1