当前位置: 首页 > 知识库问答 >
问题:

有多个查询的Jsoup Select/Jsoup Select内部是否存在OR操作?

谷梁卓
2023-03-14

我知道我们可以通过使用:

doc.select("div.myclass > p,h2");  // select p or h2 inside myclass

但我如何选择这样的东西:

doc.select("div.myclass > p, h2" || "div.myclass > p > a");// this is a fake function

我想在myclass内部同时选择(p,h2)和(p>a)

如果我只用

doc.select("div.myclass > p");

我无法获得内部p的内容。

我怎么能那样做?

共有1个答案

韦俊英
2023-03-14

您假设doc.select(“div.myclass>p,h2”);将只选择(在p元素旁边)h2元素,这些元素是具有类myclassdiv的直接子元素,这是不正确的。Jsoup CSS实现中的,运算符优先于运算符。因此,在您的示例中,它将选择所有h2元素,而不管它在DOM中的什么位置。

String html = ""
        + "<h2>header1</h2>"
        + "<div class=\"myclass\">"
        + "<h2>header2</h2>"
        + "    <p>p1</p>"
        + "    <div class=\"myclass2\">"
        + "    <p>p2</p>"
        + "    </div>"
        + "</div>"
        ;
Document doc = Jsoup.parse(html);
Elements els1 = doc.select("div.myclass > p,h2");
System.out.println(els1+"\n");
Elements els2 = doc.select("div.myclass > p, div.myclass > h2");
System.out.println(els2+"\n");

在上面的示例中,您可以看到ELS1的输出将包括h2元素,该元素不是div的子元素。

要选择div.myclass中的所有p元素,即使它们不是直接子元素,也可以使用空格运算符:

Elements ps = doc.select("div.myclass p");

这将产生以下输出,其中包含上面示例中的html:

<p>p2</p>
<p>p3</p>

看看JSoup文档,了解其他可能的运算符的含义。

 类似资料:
  • 我在使用JSoup库时遇到了一些问题,特别是在尝试选择标记中的文本时。输出应为“HELLO WORLD” 我本以为doc.select("div.sub"). get(0);会做到这一点,但它不会返回任何东西。有什么方法是我无知地错过的吗? 我的代码: 我正在努力搜集的代码: 有什么想法吗? 谢谢!

  • 问题内容: 我在 单个 查询中执行多个插入操作: 现在假设在查询中指定了成千上万的值(因此省略号)…。 是否可能存在某些情况下VALUES的某些部分设法在数据库中进行了插入/更新,而其余部分却由于某种类型的db错误/故障/内存耗尽等而没有得到插入/更新? mysql查询是全部还是什么? 确实,对于每个执行的mysql查询,查询中指定的所有值都将被平滑地插入/更新,或者没有一个值将被插入/更新? 问

  • 问题陈述:在JPA hibernate中,我执行了一个方法

  • 问题内容: 我想用cakephp进行这样的查询: 这是我的$ conditions代码: 我正在使用Debugger :: dump()方法显示结果,并且结果仅使用最后一个“ OR”条件,而不是同时使用“ OR”条件: 我的问题是,如何进行查询以同时使用“ OR”条件? 请尽快回复..在此先感谢:) 问题答案: 请尝试以下方法: 将是 任何阵列没有指定,或者是。无需手动指定。

  • 我是spring boot新手,需要关于具有多个内部连接的自定义JPA查询的帮助。基本上,我需要将以下SQL查询转换为JPA查询: 下面是代码结构: 公司实体 软件库 认证计数信号I mpl

  • 问题内容: 虽然这两个给我相同的结果,但在内部或外部安装过滤器有什么区别?在表现或幕后动作方面是否有所不同? 问题答案: 在查询中过滤 Elasticsearch将以更有效的方式执行查询和过滤,以减少结果集并尽快获得答案。这称为filtered_query 查询后过滤 首先运行查询, 然后对 结果进行过滤, 然后 再将其返回给客户端。这称为post_filter。 尽管post_filter的效率