从xml创建字典

时间:2014-07-18 13:11:50

标签: c# xml dictionary

鉴于此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());

但我得到一个“对象引用未设置为对象的实例”。错误。

1 个答案:

答案 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" />