2011-05-24 43 views
8

我有下面的XML:迭代通過XmlNodeList中,價值是永遠不變的

<xmlRequest> 
<stats> 
<match mid='40704828'> 
    <match_stats> 
    <ms aid='254664' cli_name='Hero_Engineer'> 
     <stat name='nickname'>lethallynx</stat> 
     <stat name='level'>11</stat> 
    </ms> 
    <ms aid='354522' cli_name='Hero_Devourer'> 
     <stat name='nickname'>AbendrothA</stat> 
     <stat name='level'>12</stat> 
    </ms> 
    </match_stats> 
</match> 
</stats> 
</xmlRequest> 

我想用下面的代碼中提取暱稱和水平的值:

XmlNodeList nodeList = doc.SelectNodes("//ms"); 

List<string> myList = new List<string>(); 

foreach (XmlNode node in nodeList) 
{ 
     XmlNode nodeNickName = node.SelectSingleNode("//stat[@name='nickname']/text()"); 

     mylist.Add(nodeNickName.Value); 
} 

問題雖然我可以看到用下一組數據更新節點對象,但返回的值始終與第一個暱稱相同。

所以nodeNickName.Value總是等於「lethallynx」。

任何想法?

回答

14

//stat[@name='nickname']/text() XPath查詢的//選擇根節點,並從那裏向下搜索。

你應該用./,這需要從當前節點搜索替換此,作爲./stat[@name='nickname']/text()

+0

這個工作。謝謝! – lethallynx 2011-05-24 16:08:23

0

在你foreach嘗試:

string nickname = node.SelectSingleNode("stat[@name='nickname']").InnerText; 

mylist.Add(nickname);