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 の フォロー」 お願いします!!