java - 如何使用 Jsoup 删除文本级别的所有元素?

标签 java html jsoup

我正在开发一个项目,我只对页面布局感兴趣,对文本不感兴趣。我目前无法摆脱文本级别的每个元素。例如:

<div>
    <ul>
        <li>some menu item</li>
        <li>some menu item</li>
        <li>some menu item</li>
    </ul>
</div>
<div>
    <h3>Tile of some text</h3>
    <p></p>
    <p>some text</p>
    <ul>
        <li>some other text</li>
        <li>some other text</li>
        <li>some other text</li>
    </ul>
</div>

我想删除文本级别的 ul、li、p 和 h3 元素,但保留 div 和带有菜单项的列表,因为这是页面布局的一部分。我如何使用 Jsoup 做到这一点?

我一直在尝试使用 document.select() 然后使用 .remove() 元素来执行此操作,但 select 函数不适用于此类非标准查询。

编辑:我想要得到的最终结果是:

<div>
    <ul>
        <li>some menu item</li>
        <li>some menu item</li>
        <li>some menu item</li>
    </ul>
</div>
<div>

</div>

正如您所看到的,当 ul 标签与其中包含文本的标签位于同一级别时,它会删除列表。 ul 标签是页面上文本的一部分,与页面布局无关。带有菜单项的 ul 标记对于页面很重要,因为它定义了那里有一个菜单,并且有 3 个不同的项目。

最佳答案

您可以使用标准选择和删除所有 pliul 元素:

doc.select("p").remove();
doc.select("ul").remove();
doc.select("li").remove();

关于java - 如何使用 Jsoup 删除文本级别的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38997118/

相关文章:

java - 填充数组的通用方法

java - GWT RPC 延迟绑定(bind)失败

html - 自动对齐页面中的表格

java - 使用 JSOUP 在 HTML 页面中突出显示特定单词

Java - 通过用户身份验证访问文件

java - Java EE 中 ManagedExecutorService 和 ManagedThreadFactory 之间的区别

CSS等高div

javascript - 资源解释为样式表但通过 mime 传输

java - JSOUP .attr() 方法不从工作 html 中提取数据

java - 使用java编辑浏览器的文本字段