如何在C#中迭代XML并填充字典?

时间:2015-07-17 21:44:03

标签: c# xml linq

我有一个与此类似的XML:

<Account>
  <Personal>
    <Name>TestName</name>
    <address>TestAddress</Address>
  </personal>
  <details>
    <House>
        <Foundation>
            <Severity>0</Severity>
        </Foundation>
        <StepsFront>
            <Severity>-1</Severity>
        </StepsFront>
        <StepsRear>
            <Severity>-1</Severity>
        </StepsRear>
        <StepsSide>
            <Severity>-1</Severity>
        </StepsSide>
        <PorchFront>
            <Severity>0</Severity>
        </PorchFront>
    </House>

  </details>
</Account>

我可以很容易地获得个人详细信息,但是我想要一些方法来动态填充House中的项目,因为这些可能会发生变化,如下所示:

Foundation 0    
StepsFront 3    
StepsRear  1    
StepsSide  3    
PorchFront 2

我尝试过几种方法,使用LINQ to XML和XDocument以及XElement,但我用过的任何东西都没有给我任何接近。

2 个答案:

答案 0 :(得分:2)

您可以使用ToDictionary方法:

XDocument document;
...
var house = document.Elements("House").First();
house.Elements().ToDictionary(e => e.Name, e => e.Element("Severity").Value);

答案 1 :(得分:0)

Dictionary<string, int> severities =
    doc.Descendants("House").First()
    .Elements().ToDictionary(
        e => e.Name.ToString(),
        e => int.Parse(e.Element("Severity").Value));