C#でのXML読み込み方法とは?要素の指定・要素の絞り込み・要素の存在確認方法
公開日時:

- SE
- C#でXMLを読み込むにはどうすればいいのですか。
- PM
- LINQを使います。それでは、XMLの基本的な読み込み方法や要素の指定、要素の絞り込み、要素の存在確認方法について解説いたしましょう。
C#でのXML読み込み方法とは?
今回は、C#でのXML読み込み方法について説明します。XML読み込み方法は色々ありますが、ここではLINQを使った方法を紹介します。LINQを使うことで簡単にXML読み込みが実現できます。基本的な読み込み方法、要素の指定、絞り込み、要素の存在確認方法について紹介します。
C#でのXML読み込み方法に興味のある方はぜひご覧ください。
読み込み
C#でのXML読み込み方法を紹介します。sample.xmlの内容は以下とします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?xml version="1.0" encoding="utf-8" ?> <userTable> <user> <name>ichiro</name> <age>35</age> <gender>male</gender> </user> <user> <name>jiro</name> <age>43</age> <gender>male</gender> </user> <user> <name>hanako</name> <age>24</age> <gender>female</gender> </user> <user> <name>takako</name> <age>37</age> <gender>female</gender> </user> </userTable> |
それではLinqを使った実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; namespace ConsoleApplication1 { class Program { public static void Main() { // XML読み込み XElement xml = XElement.Load(@"C:\test\sample.xml"); // userを取得 IEnumerable<XElement> users = from item in xml.Elements("user") select item; // userの情報を取得 foreach (XElement user in users) { Console.WriteLine("name:{0}, age:{1}, gender:{2}", user.Element("name").Value, user.Element("age").Value, user.Element("gender").Value); } } } } |
実行結果は以下のようになります。
1 2 3 4 |
name:ichiro, age:35, gender:male name:jiro, age:43, gender:male name:hanako, age:24, gender:female name:takako, age:37, gender:female |
このようにC#では、LINQを使用すれば簡単にXML読み込みができます。
要素指定
C#でのXML読み込み時に要素を絞り込む方法を紹介します。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; namespace ConsoleApplication1 { class Program { public static void Main() { // XML読み込み XElement xml = XElement.Load(@"C:\test\sample.xml"); // user.nameの値を取得 IEnumerable<String> names = from item in xml.Elements("user").Elements("name") select item.Value; // nameの情報を取得 foreach (String name in names) { Console.WriteLine("name:{0}", name); } } } } |
実行結果は以下のようになります。Elementsメソッドを連結することで、要素を絞り込めます。
1 2 3 4 |
name:ichiro name:jiro name:hanako name:takako |
条件指定
C#でのXML読み込み時に条件を指定する方法を紹介します。SQL文のように、where句を使用します。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; namespace ConsoleApplication1 { class Program { public static void Main() { // XML読み込み XElement xml = XElement.Load(@"C:\test\sample.xml"); // maleのuser一覧を取得 IEnumerable<XElement> maleUsers = from item in xml.Elements("user") where item.Element("gender").Value == "male" select item; // 結果表示 foreach (XElement user in maleUsers) { Console.WriteLine("name:{0}, age:{1}, gender:{2}", user.Element("name").Value, user.Element("age").Value, user.Element("gender").Value); } } } } |
実行結果は以下のようになります。
1 2 |
name:ichiro, age:35, gender:male name:jiro, age:43, gender:male |
このようにC#では、XML読み込み時に条件を指定できます。
存在確認
C#でのXML読み込み時に要素の存在確認をする方法を紹介します。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System; using System.Linq; using System.Xml.Linq; namespace ConsoleApplication1 { class Program { public static void Main() { // XML読み込み XElement xml = XElement.Load(@"C:\test\sample.xml"); // ルート要素の最初の子要素取得 var child = xml.Elements("user").First(); // 子要素の最初の子要素(孫要素)の取得 var grandChild = child.Elements("name").First(); // 要素の存在確認 Console.WriteLine("xml.HasElements: {0}", xml.HasElements); Console.WriteLine("child.HasElements: {0}", child.HasElements); Console.WriteLine("grandChild.HasElements: {0}", grandChild.HasElements); } } } |
実行結果は以下のようになります。
1 2 3 |
xml.HasElements: True child.HasElements: True grandChild.HasElements: False |
このようにC#では、要素に子要素が存在するか否かを確認できます。
- SE
- LINQを使ったXMLの基本的な読み込み方法や要素の指定、要素の絞り込み、要素の存在確認方法がよく分かりました。
- PM
- 今回解説した内容を参考にご自身でソースコードを書いてみることをおすすめします。
まとめ
いかがでしたでしょうか。C#でのXML読み込み方法について説明しました。LINQを使うことで簡単にXML読み込みが実現できます。基本的な読み込み方法、要素の指定、絞り込み、要素の存在確認方法について紹介しました。
ぜひご自身でC#のソースコードを書いて、理解を深めてください。