有一个HTML文件(我不控制其内容),该文件包含多个input
元素,所有元素的固定id
属性相同"search_query"
。文件的内容可以更改,但是我知道我一直想获得input
具有id属性的第二个元素"search_query"
。
我需要一个XPath表达式来执行此操作。我试过了,//input[@id="search_query"][2]
但是不行。这是此查询失败的示例XML字符串:
<div>
<form>
<input id="search_query" />
</form>
</div>
<div>
<form>
<input id="search_query" />
</form>
</div>
<div>
<form>
<input id="search_query" />
</form>
</div>
请记住,以上只是示例,其他HTML代码可能完全不同,并且这些input
元素可以出现在没有一致文档结构的任何地方(但我保证始终至少会有两个input
元素的id属性为"search_query"
)。
正确的XPath表达式是什么?
好问题,+ 1。请参阅我的答案以获取对该问题的完整说明以及所需的解决方案。
—
Dimitre Novatchev
关键点:给定ID的元素不得超过一个(因此问题中的HTML实际上是无效的)。在实践中,无论如何,浏览器都可以让您做到这一点,但是如果您这样做,您会错过使用ID的唯一好处,那就是它们表示“我是唯一的”(而类被设计用于非唯一符号)。
—
machineghost