如何使用jsoup选择html文档的叶标记

时间:2014-12-16 04:25:56

标签: javascript html jsoup

我正在使用jsoup来解析html文档。我需要提取所有子div元素。这基本上是没有嵌套div标签的div标签。我在java中使用以下内容来提取div标签,

Elements bodyTag = document.select("div:not(div>div)"); 

以下是一个例子:

<div id="header">
     <div class="container">
         <div id="header-logo"> 
         <a href="/" title="mekay.com">
             <div id="logo">
             </div> </a>
        </div>
        <div id="header-banner">
            <div data-type="ad" data-publisher="lqm.j2ee.site" data-zone="ron">
            </div>
        </div>
     </div>
</div>

我只需要提取以下内容:

 <div id="logo">
 </div>
 <div data-type="ad" data-publisher="lqm.j2ee.site" data-zone="ron">
 </div>

相反,上面的代码片段会返回所有div标记。那么,请你帮我弄清楚这个选择器出了什么问题

2 个答案:

答案 0 :(得分:1)

这个完美无缺

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

试试online

  • 添加您的html文件
  • 将css查询添加为div:not(:has(div))
  • 检查结果元素

答案 1 :(得分:0)

如果您只想要div个没有任何子项的叶子,请使用此

Elements emptyDivs = document.select("div:empty");

您现在使用的选择器意味着fetch me all the divs that are not direct children of another div。它带来了第一个父div是正常的,因为div id="header"不是div的直接子。其父母很可能是body