XDocument
で XMLファイル を開き、LINQ で解析をする サンプルコード を掲載します。
LINQ と言いながら、結局使うのは XDocument
になります。
サンプル XML
<?xml version="1.0" encoding="utf-8" ?> <users> <user user_uid="hoge" user_name="hoge" email="" application_name="" comment="" password="foobar" password_question="" password_answer="" is_approved="true" last_activity_date="2014/04/01 12:00:00" last_login_date="2014/04/05 12:00:00" last_password_changed_date="2014/04/01 12:00:00" creation_date="2014/04/01 12:00:00" is_online="false" is_lockedout="false" last_lockedout_date="0001/01/01 00:00:00" failed_password_attempt_count="" failed_password_attempt_window_start="" failed_password_answer_count="" failes_password_answer_window_start="" /> </users>
サンプル コード
using System.Linq; using System.Xml.Linq; public override bool ValidateUser(string username, string password) { var xdoc = XDocument.Load(@"user.xml"); var query = from user in xdoc.Descendants("user") where user.Attribute("user_name").Value == username && user.Attribute("password").Value == password select user; return query.Count() == 1; }
今回のサンプルコードでは、XMLファイルが単純なので、LINQのクエリも単純になっています。 LINQ で 複雑な XML を検索するのは難しそうだったので、 XMLファイル を単純化し、簡単なサンプルコードにしました。
あくまで個人的な感想ですが…複雑な XMLファイル の場合、次のどちらかを検討した方が良い気がしました。
- XMLファイル の フォーマット を単純化する(LINQで検索しやすいフォーマットへ変える)
- XPath を利用した検索にする
関連記事
参考記事
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!