C#言語でXML形式のファイルを読み込み・書き込みする方法についてまとめます。
※かなり適当なまとめなのでそのうち書き直すかもしれません。
はじめに
XMLファイルを扱う必要が出てきて、ちょうどC#を勉強していたので、C#でXMLファイルの入出力を行う方法を調べてみました。
幾つか方法があるみたいなので、各方法について現在理解していることをまとめておきます。なので間違いが多々あると思います。ご注意ください。
C#によるXMLファイル入出力
C#によるXMLファイル入出力には、下記のような方法があるようです。
- XmlSerializer
- XPath
- LINQ to XML
今のところの理解では、XMLファイルの構造が簡単なら「XmlSerializer」、構造が複雑なら「LINQ to XML」、複雑な操作をしたければ「XPath」という感じだと思います。
XmlSerializer
XMLファイルと同じ構造のクラスを作成し、それに情報を読み込む、またはクラスのデータを書き出す方法です。
読み込み、書き出し部分以外は通常のクラスに対する操作で情報を扱います。
- オブジェクトの内容をXMLファイルに保存、復元する: .NET Tips: C#, VB.NET
- [C#]属性とテキストで構成されるXMLタグをデシリアライズする為のクラス設計 | Zero Configuration
「C# XML」で検索するとこの方法が出てくるのですが、いちいちクラスを作るのがめんどくさく感じます。XMLファイルの構造が複雑だと特に。
XPath
XPathという構文を利用して、XMLファイルから指定した情報を抜き出すことができます。
抜き出した情報に対しては、配列やコレクションに対する操作を行うことができます。
XPathというのはXML専用のものではなくて、木構造を表現する方法の一つみたいです。
LINQ to XML
LINQを利用して、XMLファイルから特定の条件に合う情報を抜き出すことができます。
抜き出した情報に対しては、配列やコレクションに対する操作を行うことができるようです。
- 困ったときにそのまま使える LINQ to XML コードサンプル 18 パターン [1/2] - Web/DB プログラミング徹底解説
- 困ったときにそのまま使える LINQ to XML コードサンプル 18 パターン [2/2] - Web/DB プログラミング徹底解説
- XMLを扱えるLINQ ―LINQ to XML― の基礎を学ぼう − @IT
LINQについて勉強中なので、ほとんど理解できていません。
おわりに
昔にC++でXMLファイルを扱ったときに比べてだいぶ簡単な気がします。
でもRubyとかのほうがもっと簡単なんでしょうか?そのうち勉強します。