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