如何在.net中反序列化XML集合到字典

本文关键字:XML 集合 字典 反序列化 net | 更新日期: 2023-09-27 18:09:07

假设我有以下XML:<appSettings> <add key="key1" value="value1" /> <add key="key2" value="value2" /> <add key="key3" value="value3" /> <add key="key4" value="value4" /> </appSettings>

,我想把它转换成一个对象:

AppSettings["key1"] = "value1"; AppSettings["key2"] = "value2"; AppSettings["key3"] = "value3";

等等…

我在网上查过了,还没有找到有用的东西。有人能帮我一下吗?

如何在.net中反序列化XML集合到字典

轻松。

var xd = XDocument.Parse(xml);
var AppSettings = xd.Root.Elements("add")
    .ToDictionary(
        xe => xe.Attribute("key").Value,
        xe => xe.Attribute("value").Value);

使用LINQ很容易做到这一点:

XElement appSettings = (...); // Parse your XML and get the root Element.
var dict = appSettings.Elements().ToDictionary(el => el.Attribute("key"), el => el.Attribute("value"));
var xml = XDocument.Parse("<appSettings><add key='"key1'" value='"value1'" /> <add key='"key2'" value='"value2'" /> <add key='"key3'" value='"value3'" /> <add key='"key4'" value='"value4'" /> </appSettings>");
xml.Elements().First().Elements()
    .Select (x => new {  key = x.Attribute("key").Value, value = x.Attribute("value").Value })
    .ToDictionary(e => e.key, e => e.value).Dump();