2011-08-01 89 views
2

我試圖選擇主文檔的子節點內的某些節點。XML XPath SelectSingleNode問題

XmlNodeList nodes = xml.SelectNodes("//RECORD"); 

for (int i = 0; i < nodes.Count; i++) 
{   
    Console.WriteLine("Time: " + nodes[i].SelectSingleNode("//content2").InnerText); 
} 

這是什麼結束了做什麼,是一切單內容2節點,具有相同的價值,但在XmlDocument的,對於每一個「錄音」的內容2值增加。

如果我查看NodeList,例如每個content2節點都從1遞增到32。

爲什麼SelectSingleNode返回相同的節點?我如何讓它從孩子中選擇它?

回答

3

忽略XPATH字符串中的「//」。這將看到選定的XML而不是整個文檔。

1

這是因爲您正在XPATH中爲//節點[i] .SelectSingleNode使用// content2。 //在XPATH中意味着查看任何級別的所有實例。您應該執行// RECORD/content2的XPATH,然後循環這些節點。

+0

然而,我同意在每條記錄中都需要多個節點,而不僅僅是一個節點。 –

+0

我怎麼才能看到內部?我是否省略「//」? –

+0

刪除//將獲取集合中遇到的第一個節點。所以如果你正在循環選擇單個節點,你仍然會一直抓住第一個節點。對於你看起來像是在做什麼,你會想要使用XPATH使用SelectNodes獲取所有節點,而不使用//然後循環結果集。 – Josh