XMLは、データの保存や交換に広く使用されるフォーマットです。C#では、XMLを簡単に読み込んで処理するための強力なツールが用意されています。この記事では、C#でXMLを読み込む基本的な方法について、初心者にも分かりやすく解説します。
XMLの読み込み方法
C#でXMLを読み込むには、主に以下の3つの方法があります:
- XmlReader クラス
- XmlDocument クラス
- LINQ to XML
それぞれの方法について、具体的な例を見ていきましょう。
1. XmlReader クラスを使用する方法
XmlReader
は、XMLを前から順に読み込む高速な方法を提供します。メモリ使用量が少ないため、大きなXMLファイルの処理に適しています。
using System;
using System.Xml;
class Program
{
static void Main()
{
string xmlString = @"
<bookstore>
<book>
<title>C#プログラミング入門</title>
<author>山田太郎</author>
<price>2500</price>
</book>
<book>
<title>XMLデータ処理技法</title>
<author>鈴木花子</author>
<price>3000</price>
</book>
</bookstore>";
using (XmlReader reader = XmlReader.Create(new System.IO.StringReader(xmlString)))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
switch (reader.Name)
{
case "title":
if (reader.Read())
Console.WriteLine($"タイトル: {reader.Value}");
break;
case "author":
if (reader.Read())
Console.WriteLine($"著者: {reader.Value}");
break;
case "price":
if (reader.Read())
Console.WriteLine($"価格: {reader.Value}円");
break;
}
}
}
}
}
}
このコードでは、XmlReader
を使用してXML文字列を読み込み、各要素の値を出力しています。
2. XmlDocument クラスを使用する方法
XmlDocument
は、XMLをメモリ上にツリー構造で読み込み、ノードの追加・削除・変更が可能です。小〜中規模のXMLの処理に適しています。
using System;
using System.Xml;
class Program
{
static void Main()
{
string xmlString = @"
<bookstore>
<book>
<title>C#プログラミング入門</title>
<author>山田太郎</author>
<price>2500</price>
</book>
<book>
<title>XMLデータ処理技法</title>
<author>鈴木花子</author>
<price>3000</price>
</book>
</bookstore>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);
XmlNodeList books = doc.GetElementsByTagName("book");
foreach (XmlNode book in books)
{
Console.WriteLine($"タイトル: {book["title"].InnerText}");
Console.WriteLine($"著者: {book["author"].InnerText}");
Console.WriteLine($"価格: {book["price"].InnerText}円");
Console.WriteLine();
}
}
}
このコードでは、XmlDocument
を使用してXML文字列を読み込み、各書籍の情報を出力しています。
3. LINQ to XMLを使用する方法
LINQ to XMLは、XMLの読み込みと操作を簡潔に行える方法を提供します。最も柔軟で使いやすい方法の一つです。
using System;
using System.Xml.Linq;
using System.Linq;
class Program
{
static void Main()
{
string xmlString = @"
<bookstore>
<book>
<title>C#プログラミング入門</title>
<author>山田太郎</author>
<price>2500</price>
</book>
<book>
<title>XMLデータ処理技法</title>
<author>鈴木花子</author>
<price>3000</price>
</book>
</bookstore>";
XDocument doc = XDocument.Parse(xmlString);
var books = from book in doc.Descendants("book")
select new
{
Title = book.Element("title").Value,
Author = book.Element("author").Value,
Price = int.Parse(book.Element("price").Value)
};
foreach (var book in books)
{
Console.WriteLine($"タイトル: {book.Title}");
Console.WriteLine($"著者: {book.Author}");
Console.WriteLine($"価格: {book.Price}円");
Console.WriteLine();
}
}
}
このコードでは、LINQ to XMLを使用してXML文字列を読み込み、LINQクエリを使って各書籍の情報を取得し出力しています。
まとめ
C#でXMLを読み込む方法には、主にXmlReader
、XmlDocument
、LINQ to XMLの3つがあります。それぞれに特徴があり、用途や扱うXMLのサイズによって適切な方法を選択することが重要です。初心者の方は、まずLINQ to XMLから始めるのがおすすめです。シンプルで直感的な構文を持ち、多くの場合で十分な機能を提供してくれます。
XMLの読み込みは、データ処理やアプリケーション開発において重要なスキルです。これらの方法を適切に使い分けることで、効率的にXMLデータを扱うことができます。
コメント