有一个HTML文件(我不能控制它的内容),它有几个input
元素,它们都具有相同的固定id
属性"search_query"
。该文件的内容可以更改,但我知道我总是希望获得id属性为"search_query"
的第二个input
元素。
我需要一个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表达式是什么?
发布于 2010-10-24 23:27:54
这似乎起作用了:
/descendant::input[@id="search_query"][2]
我从Michael Kay的“XSLT2.0和XPath 2.0程序员参考,第4版”中得到这个结论。
在XML Path Language规范http://www.w3.org/TR/xpath/#path-abbrev的"Abbreviated Syntax“一节中也有一个注释,提供了一些线索。
https://stackoverflow.com/questions/4007413
复制相似问题