【问题标题】:Linq To Xml - Create Dictionary From Repetitive XMLLinq To Xml - 从重复的 XML 创建字典
【发布时间】:2013-03-06 13:03:40
【问题描述】:
我有一个这样的 XML 字符串:
<root>
<name>Key</name>
<value>Value</value>
<name>Key</name>
<value>Value</value>
<name>Key</name>
<value>Value</value>
</root>
如何生成与此相对应的 C# 字典 - 即为每对名称和值创建一个字典项。 (使用 Linq To XML)。
【问题讨论】:
标签:
c#
xml
dictionary
linq-to-xml
【解决方案1】:
我会尝试这样的事情......
XDocument doc = XDocument.parse(... parse you XML here ...);
var nameElements = doc.Descendants("name");
var dictionary = nameElements.ToDictionary(el => el.Value,
el => el.ElementsAfterSelf().First().Value);
这首先找到所有name 元素,然后将此数组投影到字典中。键选择器使用el.Value,这是name 元素的值。值选择器采用元素的下一个兄弟元素,即您的 value 元素。
【解决方案2】:
你可以使用ToDictionary():
var dict = XElement.Parse(yourMarkup).Elements("name").ToDictionary(
name => name.Value,
name => name.ElementsAfterSelf("value").First().Value);