gpt4 book ai didi

java - XPath 从某个元素之后的元素获取文本

转载 作者:搜寻专家 更新时间:2023-10-31 08:29:54 24 4
gpt4 key购买 nike

所以现在如果我有这样的事情:

//div[@class='artist']/p[x]/text()

x 可以是 3 或 4,甚至可以是不同的数字。幸运的是,如果我要查找的内容不在 3 中,我可以只检查 null 并继续直到找到文本。问题是我宁愿知道我每次都会去正确的元素。所以我尝试了这个:

div[@class='people']/h3[text()='h3 text']/p/text()

因为总会有一个 <p><h3>h3 text</h3>之后.然而,这永远不会返回任何东西,而且通常会导致错误。如果我删除/p,我将返回“h3 文本”。

无论如何,我如何获得 <p>直接在 <h3> 之后?

顺便说一句,我为此在 Java 中使用了 HTMLCleaner。

最佳答案

默认情况下,当您不指定 axis 时你得到 child::轴,这就是为什么 /运算符似乎逐个子地下降 DOM 树。有一个隐含的 child::在每个斜杠之后。

在您的情况下,您不想找到 <div> child ,你想找到它的 sibling 。同胞是处于同一嵌套级别的元素。具体来说,您应该使用 following-sibling::轴。

div[@class='people']/h3[text()='h3 text']/following-sibling::p/text()

XPath 轴

Axes是 XPath 的一个高级特性。它们是使 XPath 特别强大的特性之一。

您已经熟悉另一个轴,尽管您可能没有意识到:@符号是 attribute:: 的简写.当你写 @href你真的在说attribute::href ,例如寻找名为“href”的属性而不是

斧头,嗯?速记,嗯?告诉我更多,你说?好的!

  • ...是更详细的 self::node() 的简写和 parent::node() , 分别。如果您愿意,可以使用更长的表格。

  • //您通常看到的运算符 //pbody//a有一个隐藏的descendant-or-self::node()在斜线之间。 //p/descendant-or-self::node()/p 的简写.

关于java - XPath 从某个元素之后的元素获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4191394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com