2016-07-19 52 views
0

我試圖抓住指數3和4的在下面的XML元素:如何通過索引搶元素時的元素有不同的父母

<Automated> 
    <Group> 
     <Test><id>testId</id>...</Test> 
     <Test>...</Test> 
     <Test>...</Test> <!-- 3? --> 
    </Group> 
    <Test>...</Test> <!-- 4? --> 
</Automated> 

據我所知,使用了表達//x抓住類型爲x的所有元素。我試圖用搶的第三和第四個元素的表達是:

//Test[3] , //Test[4] 

然而,元素//Test[4]不返回任何東西。經過進一步調查,我意識到//Test[1]將實際返回元素1和4.這實際上是第一個元素的第一個孩子,第二個(第一個測試?)孩子。

有什麼辦法可以實現我想要做的事情嗎?

我可以想到的唯一的其他事情(因爲我在c#中使用它並有權訪問腳本)使用計數器來遍歷// Test [x]的所有可能選擇,然後索引它自己。但是,這看起來好像比需要更多的工作。

回答

0

事實證明,可以使用圓括號來解決這個問題,因爲xPath將使用這些優先級。

(//Test)[4] 

會給我的XML文檔中的所有測試元素的第四個元素,而

//Test[4] 

沒有在文件中存在,因爲有4個總測試孩子沒有元素。

相關問題