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

オブジェクトのXMLシリアル化について

環境/言語:[OS : Windows XP Professional / .NET Framework : 2.0/C#]
分類:[.NET]

はじめまして、いつも拝見させて頂いてます。

本日はこちらのページの"オブジェクトのXMLシリアル化"について
お尋ねしたく書き込みを致しました。

http://dobon.net/vb/dotnet/file/xmlserializer.html
上記のTipsを参考にシリアル化を実装したのですが
独自クラスにList型を使用した際に
List型に入れたTypeでシリアル化されてしまいました

例:
<ListMsg>
<string>msg0</string>
<string>msg1</string>
</ListMsg>

この「<string>」の部分を自分で記述したいのですが
List型にたいして"System.Xml.Serialization.XmlElement"を宣言すると
階層構造が解除された状態でシリアル化されてしまいました

例:
<メッセージ>msg0</メッセージ>
<メッセージ>msg1</メッセージ>

できれば階層構造の状態のまま「<string>」の部分を自分で記述したいのですが
何か方法はありますでしょうか?

よろしくお願いします。
プロパティに、リストの各要素の設定を指す XmlArrayItem 属性を設定してあげてください。
XmlElement 属性は使用できません。リスト自体のシリアライズ時の要素名を変更したいなどの場合、XmlArray 属性を使用します。
Hongliangさん

ありがとうございます。
以下のように記述する事で実現出来ました。

[XmlArray("メッセージリスト"),XmlArrayItem("メッセージ")]
public List<string> ListMsg;

Xml:
<メッセージリスト>
<メッセージ>msg0</メッセージ>
<メッセージ>msg1</メッセージ>
</メッセージリスト>
すいません、解決済みにチェックをするのを忘れていました
解決済み!

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