鉴于此XML:
<dataroot>
<TestTable>
<Tag>tag1</Tag>
<FName>t1</FName>
</TestTable>
<TestTable>
<Tag>tag2</Tag>
<FName>t2</FName>
</TestTable>
<TestTable>
<Tag>tag3</Tag>
<FName>t3</FName>
</TestTable>
</dataroot>
如何将其加载到词典中,这样如果我查找“Tag3”,它会返回“t3”?
我试过了:
var doc = XDocument.Load("ConfigItems.xml");
Dictionary<string, string> ConfigItems;
ConfigItems = doc.Descendants("TestTable").ToDictionary(v => v.Attribute("Tag").Value.ToString (), v => v.Attribute("FName").Value.ToString());
但我得到一个“对象引用未设置为对象的实例”。错误。
答案 0 :(得分:4)
那些是not attributes, they are elements。这应该有效:
var doc = XDocument.Parse(s);
Dictionary<string, string> ConfigItems;
ConfigItems = doc.Descendants("TestTable")
.ToDictionary(v => v.Element("Tag").Value,
v => v.Element("FName").Value);
var item = ConfigItems["tag3"];
Console.WriteLine(item); // "t3"
属性是这样的:
<TestTable Tag="tag1" FName="t1" />