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

问题描述:

这是我的XML文件如何通过C#中的属性名称获取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> 

我需要通过属性名称筛选获得元素值的一部分。

作为一个实施例I需要得到所有值,其中属性= 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); 
} 

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

未将对象引用设置为对象的实例。

任何建议表示感谢。

谢谢。

这可以帮助你解决你的问题

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); 
} 

这可能做的伎俩为您

XDocument xdc = XDocument.Load(YourXMLFile); 
var rslt = xdc.Descendants("result").Where(x => x.Attribute("value").Value == "45"); 
string rsltstr = string.Empty; 
foreach(XElement el in rslt) 
{ 
    rsltstr = rsltstr + el.Value + ", "; 
} 

var rslt = xdc.Descendants("result") 
       .Where(x => x.Attribute("value").Value == "45") 
       .Select(q=>q.Value);