LINQ to XML で XMLファイル を 読み込み、解析 する 方法

0 件のコメント

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ファイル の場合、次のどちらかを検討した方が良い気がしました。

  1. XMLファイル の フォーマット を単純化する(LINQで検索しやすいフォーマットへ変える)
  2. XPath を利用した検索にする

関連記事

参考記事