我正在使用LINQ to XML来解析XML文档并从该XML创建许多对象。其中一个对象有一个Dictionary作为属性,我需要从XML填充Dictionary。但是,我不确定这样做所需的实际语法。
我知道我需要获取属性值,并以某种方式将它们分配给字典中的键/值。
我该怎么做?
我有一个这样的模型类:
public class Statistics
{
string Name { get; set; }
public IDictionary<string, string> Information { get; set; }
}
这样的XML:
<section>
<parameter name="this is a key" value="this is a value" />
<parameter name="this is a key 2" value="this is a value 2" />
</section>
在我的LINQ查询中,我需要设置name
和value
属性中的键和值。
根据我的理解,我需要做一些事情:
.ToDictionary(x => x.name, x => x.value);
但我不确定如何将其应用于我的LINQ查询,以下代码是更大的LINQ to XML查询的一部分:
.Select(x => new Statistics
{
Name = x.Attribute("name").Value,
Information = What goes here? .Select.Attributes? .ToDictionary(x => x.name, x => x.value);
答案 0 :(得分:3)
var dict = XDocument.Load(filename)
.Descendants("parameter")
.ToDictionary(p => p.Attribute("name").Value, p => p.Attribute("value").Value);
答案 1 :(得分:1)
我认为这不是最佳解决方案。
我会做那样的事情:
.Select(x => new Statistics
{
Name = x.Attribute("name").Value,
Information = GetParameterDictionnary(sectionNode)
我会创建函数
private Dictionary<string, string> GetParameterDictionnary(XmlNode sectionNode)
{
var dictionary = new Dictionary<string,string>();
foreach(var child in sectionNode.Children)
{
dictionary.Add(child.Attribute("name"), child.Attribute("value"));
}
return dictionary;
}