XDocument を利用して、XMLファイルを編集、保存する方法を掲載します。
サンプル 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;
using System.Linq;
using System.Xml;
using System.Xml.Linq;
public override void UpdateUser(MembershipUser user)
{
// ファイルパス
var filepath = @"C:\xxx.xml";
// XMLファイル読み込み
var xdoc = XDocument.Load(filepath );
// LINQで選択
var target = (from item in xdoc.Descendants("user")
where item.Attribute("user_uid").Value == user.ProviderUserKey.ToString()
select item).Single();
// 情報の更新
target.SetAttributeValue("user_name", user.UserName);
target.SetAttributeValue("email", user.Email);
target.SetAttributeValue("comment", user.Comment);
target.SetAttributeValue("is_approved", user.IsApproved);
target.SetAttributeValue("is_lockedout", user.IsLockedOut);
target.SetAttributeValue("is_online", user.IsOnline);
target.SetAttributeValue("last_activity_date", user.LastActivityDate);
target.SetAttributeValue("last_lockedout_date", user.LastLockoutDate);
target.SetAttributeValue("last_login_date", user.LastLoginDate);
// ファイル書き込み設定
var setting = new XmlWriterSettings()
{
NewLineChars = Environment.NewLine,
Indent = true,
NewLineOnAttributes = true,
OmitXmlDeclaration = false
};
// ファイルへオブジェクトを書き込み(シリアライズ)
using (var writer = XmlWriter.Create(filepath, setting))
{
xdoc.Save(writer);
}
}
関連記事
参考記事
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!