获取元素第n个实例的XPath查询

有一个HTML文件(其内容我不控制),其中包含多个输入元素,所有元素都具有“search\u query”的相同固定id属性。文件的内容可以更改,但我知道我总是希望获得第二个输入元素,该元素具有id属性“search\u query”

我需要一个XPath表达式来实现这一点。我尝试了//input[@id=“search\u query”][2],但没有成功。以下是此查询失败的示例XML字符串:

<部门>
<表格>
<输入id=“搜索\查询”/>
&lt/表格>
&lt/部门>
<部门>
<表格>
<输入id=“搜索\查询”/>
&lt/表格>
&lt/部门>
<部门>
<表格>
<输入id=“搜索\查询”/>
&lt/表格>
&lt/部门>

请记住,以上仅是一个示例,其他HTML代码可能完全不同,输入元素可能出现在任何没有一致文档结构的地方(除非我保证始终至少有两个id属性为“search\u query”输入元素)

正确的XPath表达式是什么

这是一个常见问题解答:

//somexpression[$N]

表示“查找由//somexpression选择的每个节点,该节点是其父节点的$N第个子节点”

您想要的是

(//input[@id=“search\u query”])[2]

记住[]运算符的优先级(优先级)高于/缩写

发表评论