如何使用LINQ解析此XML?

时间:2014-05-28 18:18:30

标签: c# xml linq

我有以下XML:

<propertyMetrics month="12" year="2013" propertyId="3923837">
  <metric name="siteTotal" uom="kBtu" dataType="numeric">
    <value>409249.0</value>
  </metric>
  <metric name="waterUseTotal" uom="kgal" dataType="numeric">
    <value>2434.2</value>
  </metric>
  <metric name="totalGHGEmissions" uom="MtCO2e" dataType="numeric">
    <value>28.5</value>
  </metric>
  <metric name="greenPowerOnSite" dataType="numeric">
    <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
  </metric>
</propertyMetrics>

我想要的是关闭“name”属性并获得与该名称相关联的“value”和“uom”。我正在努力想出一个简单的方法来做到这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

未经测试,我不确定最后一次&#39; null&#39;值,但它提供了将其作为Dictionary<string, anonymous>

的基本想法
var doc = XElement.Load(fileName);

var data = dox.Descendants("metric")
     .ToDictionary(e => e.Attribute("name").Value, 
      e => new { uom = e.Attribute("uom").Value, value =(double?) e.Element("Value") });