当元素具有不同的父元素时,如何通过索引获取元素

时间:2016-07-19 14:17:35

标签: xml xpath

我试图在以下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]然后索引我自己。然而,这似乎比必要的工作更多。

1 个答案:

答案 0 :(得分:0)

事实证明,可以使用括号来解决此问题,因为xPath将使用这些优先级。

(//Test)[4]

将为我提供xml文档中所有Test元素的第四个元素,而

//Test[4]

在文档中不存在,因为没有包含4个测试子项的元素。