使用LINQ从XML元素获取属性时遇到麻烦

本文关键字:属性 遇到 麻烦 获取 元素 LINQ XML 使用 | 更新日期: 2023-09-27 18:05:22

所以我从第三方API返回的一些XML解析出属性和值,我得到不一致的结果。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>

我在LINQPad中使用以下代码来查询XML:

var propMetrics = doc.Descendants("metric").Attributes();

LINQpad的输出如下所示:

IEnumerable<XAttribute> (11 items) 
name="siteTotal" 
dataType="numeric" 
name="waterUseTotal" 
dataType="numeric" 
name="totalGHGEmissions" 
uom="MtCO2e" 
dataType="numeric" 
name="greenPowerOnSite" 
dataType="numeric" 

可以看到,它没有捕获所有属性,最值得注意的是它只有一个uom属性。有人知道为什么会这样吗?谢谢!

使用LINQ从XML元素获取属性时遇到麻烦

我刚刚使用了LINQPad,并使用:

获得正确的结果:
propMetrics.Descendants("metric").Attributes()

我认为这里唯一可能发生的事情是从第三方API返回的字符串中的一些编码问题。尝试将问题中的xml复制到LINQPad并进行测试以确认这一点。