如何在C#中获取按属性名称过滤的XML节点的值?

WEA*_*API 0 c# xml xmldocument xmlnode xml-attribute

这是我的 XML 文件的一部分

<summary>
  <testcase>  
    <result value="-45">100</result>
    <result value="0">200</result>
    <result value="45">300</result>
  </testcase>
  <testcase>    
    <result value="-45">1000</result>
    <result value="0">2000</result>
    <result value="45">3000</result>
  </testcase>  
 <testcase>    
    <result value="-45">0.1</result>
    <result value="0">0.2</result>
    <result value="45">0.3</result>
  </testcase>
</summary>
Run Code Online (Sandbox Code Playgroud)

我需要通过按属性名称过滤来获取元素值。

作为示例,我需要获取属性 = 45 的所有值,然后答案是 300,3000,0.3

XmlDocument doc = new XmlDocument();
doc.Load(_xmlFilePath);
XmlNodeList nodelist = doc.SelectNodes("//testcase");

for (int i = 0; i < nodelist.Count; i++)
{
    Double value;                        
    Double.TryParse(nodelist[i].SelectSingleNode("result").Attributes["45"].InnerText, out value);
    Console.WriteLine("value : " + value);
}
Run Code Online (Sandbox Code Playgroud)

但上面的代码给出了以下错误消息。

你调用的对象是空的。

任何建议表示赞赏。

谢谢。

Pra*_*tel 5

这可能会帮助你解决你的问题

XmlDocument doc = new XmlDocument();
doc.Load(_xmlFilePath);
XmlNodeList nodelist = doc.SelectNodes("//result[@value=45]");
for (int i = 0; i < nodelist.Count; i++)
{
    double value = double.Parse(nodelist[i].InnerText);
    Console.WriteLine("value : " + value);
}
Run Code Online (Sandbox Code Playgroud)