【问题标题】:Jsoup Select only innermost divsJsoup 只选择最里面的 div
【发布时间】:2011-10-30 22:12:20
【问题描述】:

有没有办法在 Jsoup 中只选择最里面的 div(即 包含其他 div 的 div)?

澄清一下:我指的只是 div。也就是说,如果一个 div 包含不是 div 的元素但它不包含任何 div,则它被视为(就我而言)“最内层 div”。

【问题讨论】:

    标签: java html-parsing jsoup


    【解决方案1】:

    Jsoup 适用于 CSS 选择器。但是使用 CSS 选择器无法实现您想要的。所以这是毫无疑问的。您需要检查循环中的每个 div。

    Elements divs = document.select("div");
    Elements innerMostDivs = new Elements();
    
    for (Element div : divs) {
        if (div.select(">div").isEmpty()) {
            innerMostDivs.add(div);
        }
    }
    
    // ...
    

    【讨论】:

    • AFAIAC 您是 Jsoup 的 专家。如果您说 JSoup 中没有一个表达式可以执行此操作(就像在 PHP 中一样),那么我应该不要再看了。 :)
    • 不客气。不可否认,我首先尝试使用 document.select("div:not(>div)") 来查看 Jsoup 是否没有内置的偷偷摸摸的技巧来使其工作。但是,不幸的是,没有。
    【解决方案2】:

    您可以使用div:not(:has(div)) 之类的选择器——即“查找不包含 div 的 div”。

    Elements innerMostDivs = doc.select("div:not(:has(div))");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2011-09-03
      • 2011-12-28
      • 1970-01-01
      相关资源
      最近更新 更多