使用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属性。有人知道为什么会这样吗?谢谢!
我刚刚使用了LINQPad,并使用:
获得正确的结果:propMetrics.Descendants("metric").Attributes()
我认为这里唯一可能发生的事情是从第三方API返回的字符串中的一些编码问题。尝试将问题中的xml复制到LINQPad并进行测试以确认这一点。