将XML反序列化为Dictionary <string,string =“”> </string,>

时间:2012-02-09 11:28:46

标签: c# .net xml serialization

我有一些XML;

<data>
  <name1>James</name1>
  <name2>John</name2>
  etc..
</data>

name1,name2等可以是任何东西,我希望能够将这个xml理想地放入字典中,这是否可以使用内置的.net序列化?

谢谢, 詹姆斯。

编辑:理想情况下我不想使用linq。是否可以将整个元素数组序列化为字符串?所以我最终会得到一个字符串对象'Data',其中包含所有子元素标签和数据?

2 个答案:

答案 0 :(得分:8)

不,但您可以使用 Linq-to-Xml 来执行此操作:

XDocument.Load([file path, stream, whatever]).Descendants("data").Descendants()
    .ToDictionary(element => element.Name, element => element.Value)

<强>更新 正如OP在他的编辑中所说,如果没有办法使用Linq-to-Xml,那么你需要自定义实现IXmlSerializable的XML序列化(你可能想要查看其他Q&amp; A:{{3} })。

答案 1 :(得分:1)

您可以使用方法ToDictionary()使用LINQ to XML;