有一个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>
Run Code Online (Sandbox Code Playgroud)
请记住,上面只是一个示例,其他HTML代码可能完全不同,input元素可以出现在任何地方,没有一致的文档结构(除了我保证总会有至少两个inputid属性为"search_query").
什么是正确的XPath表达式?
Dim*_*hev 214
这是一个FAQ:
//somexpression[$N]
表示"查找由其选择的每个节点//somexpression是$N其父节点的子节点".
你想要的是:
(//input[@id="search_query"])[2]
Run Code Online (Sandbox Code Playgroud)
请记住:[]运算符的优先级(优先级)高于//缩写.
rla*_*ter 16
这似乎有效:
/descendant::input[@id="search_query"][2]
Run Code Online (Sandbox Code Playgroud)
我从迈克尔凯的"XSLT 2.0和XPath 2.0程序员参考,第4版"中得到了这一点.
XML路径语言规范http://www.w3.org/TR/xpath/#path-abbrev的"缩写语法"部分中还有一个注释提供了线索.
| 归档时间: |
|
| 查看次数: |
118827 次 |
| 最近记录: |