【发布时间】:2011-04-29 18:36:54
【问题描述】:
有一个 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 元素可以出现在没有一致文档结构的任何地方(除非我保证总会有至少两个id 属性为"search_query" 的input 元素)。
什么是正确的 XPath 表达式?
【问题讨论】:
-
好问题,+1。有关问题的完整解释和想要的解决方案,请参阅我的答案。
-
次要点:您永远不应该拥有多个具有给定 ID 的元素(因此问题中的 HTML 实际上是无效的)。实际上,浏览器无论如何都会让你这样做,但如果你这样做了,你就会错过使用 ID 的唯一好处,那就是它们表明“我是独一无二的”(而类被设计用于非唯一能指)。
-
不是小问题@machineghost!它实际上是一个错误! ID代表唯一标识符!