我有一个我想要存储和从XML文件检索的键/值对的列表。所以这个任务与描述的
here类似。我试图在标记的答案(使用一个keyvaluePair和一个XmlSerializer)遵循建议,但我没有得到它的工作。
到目前为止我是一个“设置”类…
public class Settings { public int simpleValue; public List<keyvaluePair<string,int>> list; }
…这个类的一个实例…
Settings aSettings = new Settings(); aSettings.simpleValue = 2; aSettings.list = new List<keyvaluePair<string,int>>(); aSettings.list.Add(new keyvaluePair<string,int>("m1",1)); aSettings.list.Add(new keyvaluePair<string,int>("m2",2));
XmlSerializer serializer = new XmlSerializer(typeof(Settings)); TextWriter writer = new StreamWriter("c:\\testfile.xml"); serializer.Serialize(writer,aSettings); writer.Close();
<?xml version="1.0" encoding="utf-8"?> <Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <simpleValue>2</simpleValue> <list> <keyvaluePairOfStringInt32 /> <keyvaluePairOfStringInt32 /> </list> </Settings>
因此,我的列表中的对的键和值都不存储,尽管元素的数量是正确的。显然我在做一些基本错误的事情。我的问题是:
>如何将列表的键/值对存储在文件中?
>如何将列表中的元素的默认生成名称“keyvaluePairOfStringInt32”更改为我想要的其他名称,如“listElement”?
keyvaluePair不可序列化,因为它具有只读属性。
Here是更多的信息(感谢Thomas Levesque)。
要更改生成的名称,请使用[XmlType]属性。
要更改生成的名称,请使用[XmlType]属性。
定义你自己的这样:
[Serializable] [XmlType(TypeName="WhateverNameYouLike")] public struct keyvaluePair<K,V> { public K Key { get; set; } public V Value { get; set; } }
原文地址:https://www.jb51.cc/xml/293404.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。