这个xpath返回带有类theclass的两个div,我希望根据它具有特定文本内容的span来匹配。 (实际使用跨度嵌套在许多节点下)所以我不想从父节点指定跨度的整个路径。
我想返回第一个div。
XPATH
//div[contains(@class, "theclass")][//span[text()="this"]]
HTML / XML
<html>
<div class="theclass">
<ul>
<li>
<strong>f</strong>
<span>this</span>
</li>
</ul>
</div>
<div class="theclass">
<ul>
<li>
<strong>g</strong>
<span>no</span>
</li>
</ul>
</div>
<div class="notclass">
<ul>
<li>
<strong>h</strong>
<span>not</span>
</li>
</ul>
</div>
</html>
答案 0 :(得分:4)
通过添加div
在当前父.
的上下文中进行搜索:
//div[contains(@class, "theclass") and .//span="this"]
演示(使用xmllint
):
$ xmllint index.html --xpath '//div[contains(@class, "theclass") and .//span="this"]'
<div class="theclass">
<ul>
<li>
<strong>f</strong>
<span>this</span>
</li>
</ul>