XDocument
で XMLファイル を開き、LINQ で解析をする サンプルコード を掲載します。
LINQ と言いながら、結局使うのは XDocument
になります。
サンプル 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 | <? 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 > |
サンプル コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 の フォロー」 お願いします!!