2017-01-16 180 views
0

這是我的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); 
} 

但上面的代碼給出以下錯誤消息。

未將對象引用設置爲對象的實例。

任何建議表示感謝。

謝謝。

回答

3

這可以幫助你解決你的問題

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

這可能做的伎倆爲您

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); 
相關問題