我试图在以下xml中抓取索引3和4的元素:
<Automated>
<Group>
<Test><id>testId</id>...</Test>
<Test>...</Test>
<Test>...</Test> <!-- 3? -->
</Group>
<Test>...</Test> <!-- 4? -->
</Automated>
据我所知,表达式//x
用于获取类型为x
的所有元素。我试图用来抓住第3和第4个元素的表达式是:
//Test[3] , //Test[4]
但是,元素//Test[4]
不会返回任何内容。在进一步调查之后,我意识到//Test[1]
实际上将返回元素1和4.这实际上是第一个元素的第一个子元素,第二个元素(第一个测试?)子元素。
有没有办法实现我想做的事情?
我能想到的唯一另一件事(因为我在c#中使用它并且可以访问脚本)这是使用计数器迭代所有可能的选择// Test [x]然后索引我自己。然而,这似乎比必要的工作更多。
答案 0 :(得分:0)
事实证明,可以使用括号来解决此问题,因为xPath将使用这些优先级。
(//Test)[4]
将为我提供xml文档中所有Test元素的第四个元素,而
//Test[4]
在文档中不存在,因为没有包含4个测试子项的元素。