DOBON.NET DOBON.NETプログラミング掲示板過去ログ

初期設定ファイル XMLにて

環境/言語:[WinXP,.NET Framework 2.0]
分類:[.NET]

はじめまして

これからVS2005でアプリケーションを作ろうと考えています。
初期設定ファイルに以下の項目を保存したいと考えています。

・ユーザー情報(ID、パスワード)
・お気に入りリスト。(タイトル、URL)

ユーザー情報はIDとパスワードを保存すればいいだけですが、お気に入りリストは、arraylistクラスになります。
これらをまとめてXMLにシリアライズ化可能ですか?
参考のページを見ると、配列をXMLシリアライズする場合、XMLファイルが丸ごと配列の内容になっています。上記の場合は、個別のデータ(ユーザー情報)と配列のデータ(お気に入りリスト)が一緒になっています。一つのXMLファイルに初期設定として保存し、また一括で読み込むことはできるのでしょうか?
> 初期設定ファイルに以下の項目を保存したいと考えています。
> ユーザー情報はIDとパスワードを保存すればいいだけですが、お気に入りリストは、arraylistクラスになります。
> これらをまとめてXMLにシリアライズ化可能ですか?

一つのクラスにすればよいです。
項目は、
[設定クラス]
・ID
・パスワード
・お気に入りコレクション(Generic.List(Of お気に入りクラス))
[お気に入りクラス]
・タイトル
・URL
とか。
私なら、ユーザー情報(ID、パスワード)は暗号化します。
暗号化したIDとパスワードはXMLの中でワルサするかもしれないので
お気に入りとは別ファイルにします。
>ROYさん
ご指摘有難うございます。セキュリティについては、今回の疑問が解消した後、
取り入れたいと思っています。

>まどかさん
ご教授有難うございます。
無事、シリアライズ化に成功しました。

ここで、疑問があるのですが、シリアライズ化を行うメンバは、
Public宣言にしなくてはならないのでしょうか?
カプセル化に慣れたいと思い、クラス内のメンバはできるだけPublicではなく
ProtectedかPrivateで宣言したいのです。

「ID」「パスワード」は、Protected宣言にして、
そのプロパティを Public Property として作成したところ、
プロパティの方をシリアライズ化することができました。

ところが、
「お気に入りコレクション(Generic.List(Of お気に入りクラス))」は、
Protected宣言にして、プロパティの方を書き込もうとしたところ、
シリアライズ化時にハンドルされていない例外?がスルーされてしまいました。

しかたがないので、今は「お気に入りコレクション(Generic.List(Of お気に入りクラス))」をPublic宣言にしてシリアライズ化しています。Public宣言にすれば、シリアライズ化に成功します。また、お気に入りコレクションのプロパティも作成しているため、そのプロパティには
属性 <System.Xml.Serialization.XmlIgnoreAttribute()> をつけてシリアライズ化されないようにしています。(この属性を外すと、元の変数とプロパティの両方がシリアライズ化されてしまい、同じデータがファイルに保存されることになってしまいます。)

結局、ユーザーIDとユーザーパスワードはうまくプロパティを保存することができましたが、お気に入りコレクション(Of お気に入りクラス)は、プロパティの元となる変数という形で保存しています。シリアライズ化、逆シリアライズ化にも今のところ不都合は生じていませんが、カプセル化(Protected宣言+プロパティ作成)を行って逆にコードが読みにくくなってしまった気がして腑に落ちません。何か、スマートな方法などご存知の方いらしたら、ご教授頂けませんでしょうか。

DOBON.NET | プログラミング道 | プログラミング掲示板