XPath:在 HTML 元素中搜索 HTML 元素

XPath: Search for HTML element within HTML element

使用 XPath,您将如何搜索仅包含另一个特定元素的元素?例如,什么表达式会导致获取所有包含 <strong> 元素的 <p> 标签?

<p>This is some text that <strong>contains another HTML element</strong></p>

在 XPath 中,您使用方括号进行过滤。它被称为谓词。见即this tutorial .

到 select 所有具有您使用的强元素的 p

 //p[strong]

如果你想找到所有只有元素 strong 而没有其他元素的 p,你添加

//p[strong][count(*)=count(strong)]

*代表任意元素。

如果像您的示例一样,您只对强元素是您使用的最后一个子节点的 p 感兴趣

//p[strong[not(following-sibling::node())]]

谓词是必经之路。

what expression would result in getting all p tags that contain elements within them?

如果您只想 select p 具有直接 strong 个子元素的元素,您可以使用 p[strong],如果您正在寻找任何后代,请使用 p[descendant::strong]。在这两种情况下,上下文节点都必须位于 p 元素的级别。