c#中 xml可以序列化到一个List,能不能序列化到一个Dictionary?

一个这样的xml<root><list><item><id>1</id><att>你好</att></item><item><id>2</id><att>hello</a... 一个这样的xml
<root>
<list>
<item>

<id>1</id>

<att>你好</att>

</item>

<item>

<id>2</id>

<att>hello</att>

</item>
</list>
</root>

[XmlRootAttribute("root")]
class A
{
[XmlArray("list"), XmlArrayItem("item")]
public List<**> m_list;

}

要是list改成Dictionary 把ID作为键,这样后面查找会方便很多,可以实现么?要怎么实现?
展开
 我来答
handangaoyang
推荐于2016-02-08 · TA获得超过2242个赞
知道大有可为答主
回答量:2633
采纳率:88%
帮助的人:925万
展开全部
  1. 你的xml文件中有中文,所以<att><![CDATA[你好]]></att>

  2. 你贴出的代码对于将类序列化成xml文件,是非常好用的。但是你的问题好像是读取xml文件,并且转换成Dictionary(不知道我的理解对不对)

  3. 如果我针对第2点的理解是对的,那么建议你采用linq to xml实现



using System.Xml.Linq;
XElement element = XElement.Load(@"d:\test.xml");

var query = (from c in element.Descendants("item")
        select new { Id = c.Element("id").Value, Att = c.Element("att").Value })
        .ToDictionary(e => e.Id);

        //两种写法都可以
        //var query = element.Descendants("item").ToDictionary(c => c.Element("id").Value);

foreach (string key in query.Keys)
{
    Console.WriteLine("key:{0},Att:{1}", key, query[key].Att);
}


    4.如果我的第二点理解错误,那么就更简单了。你已经得到了List集合,转换成Dictionary只需要list.ToDictionary(c=>c.Key)

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式