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作为键,这样后面查找会方便很多,可以实现么?要怎么实现? 展开
<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作为键,这样后面查找会方便很多,可以实现么?要怎么实现? 展开
1个回答
展开全部
你的xml文件中有中文,所以<att><![CDATA[你好]]></att>
你贴出的代码对于将类序列化成xml文件,是非常好用的。但是你的问题好像是读取xml文件,并且转换成Dictionary(不知道我的理解对不对)
如果我针对第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)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询