html - xpath 根据(相对)子内容选择父级

标签 html xml xpath

此 xpath 返回类 theclass 的两个 div,我想根据它具有特定文本内容的跨度进行匹配。 (现实世界中跨度嵌套在许多节点下)所以我不想从父节点指定跨度的整个路径。

我只想返回第一个 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>

最佳答案

通过添加 在当前父级 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>

关于html - xpath 根据(相对)子内容选择父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29401845/

相关文章:

xml - XPATH 表达式获取 XML 文件名

javascript - 动态创建内容时获取父DIV的ID

java - 写入 xml 文件导致的 Jar FileNotFoundException

java - 等待页面元素(xpath)在 Selenium Webdriver 中显示的最有效方法是什么?

xml - XPath 通过前一个元素的文本获取元素

xml - 如何使用带有 webpack 的 angular-cli 在 angular2 应用程序中导入 xml2js

javascript - Div 未禁用

html - 重新定义 <h1>, <h2>, ... 即时?

javascript - 将鼠标悬停在链接上后 Mouseenter 失败

java - 属性 'xsi:noNamespaceSchemaLocation' 不允许出现在元素 'VAST' 中