KeyValuePairCollection的XML序列化 - 当只有一个条目存在时,只有一个条目被序列化

时间:2009-08-17 14:05:05

标签: xml xml-serialization

这是我的KeyValue集合

KeyValuePairCollection<int,string> KV=new KeyValuePairCollection<int,string>();
KV.Key = 1;
KV.Value = "Chapter1";
KV.Key = 2;
KV.Value = "Chapter2";
KV.Key = 3;
KV.Value="Chapter3";

<小时/> 我使用下面的代码

序列化了该集合
StreamWriter txtWrt=null;
string m_ArraylstfileName = @"d:\XML\GenericsKV.xml";
XmlSerializer xmlPerSerlzr = 
    new XmlSerializer(typeof(KeyValuePairCollection<int,string>));
txtWrt = new StreamWriter(m_ArraylstfileName);
xmlPerSerlzr.Serialize(txtWrt, KV);

我的xml文件仅存储最终条目(即Key = 3,Value =“chapter3”)

<小时/> 建议请。

2 个答案:

答案 0 :(得分:1)

每次设置Key和Value属性时,都会覆盖以前的值而不添加新值,这就是为什么只有最后一个序列化的原因。

所以这与序列化无关,如果你想保留多个使用Dictionary

Dictionary<int,string> KV = new Dictionary<int,string>();
KV.Add(1,"a");
KV.Add(2,"b");
foreach (KeyValuePair<int, string> kvp in KV) 
{

}

答案 1 :(得分:0)

是...因为您在代码中始终覆盖键和值。 我假设你想使用字典?

Dictionary<int,string> dic = new Dictionary<int, string>();

dic.Add(1,"Chap 1");
dic.Add(2, "Chap 2");
dic.Add(3, "Chap 3");