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

如何用JSOUP删除文本级别的所有元素?

严子默
2023-03-14

我正在做一个项目,我只对页面布局感兴趣,对文本不感兴趣。我现在很难摆脱文本级别的每一个元素。例如:

<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个不同的项。

共有1个答案

贾实
2023-03-14

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

doc.select("p").remove();
doc.select("ul").remove();
doc.select("li").remove();
 类似资料:
  • 问题内容: 我正在尝试使用Jsoup删除HTML页面的标签之间的所有文本 例如,如果输入的HTML是 输出应为 基本上,我想删除由返回的内容 我发现有很多帖子是相反的,只保留文本,而没有什么可以解决我的问题。有关如何执行此操作的任何想法? 编辑 maverick9999提出的解决方案将解决大多数情况。 但是,正如注释中所注意到的,此解决方案还将删除嵌套标签。 举个例子: 将在输出中删除一个div:

  • 问题内容: 我正在使用Python的库编写基于GUI的程序。我遇到了一个问题:我需要删除 所有 子元素(而不删除父元素,在我的情况下是)。 我的代码: 我该如何实现? 问题答案: 您可以用来获取特定小部件的所有子级的列表,然后可以对其进行遍历:

  • 尽管这听起来可能太基本了,但我想问一下如何使用JSoup从doc中删除元素。 我试图寻找它,但没有成功。 问题是: 这工作罚款。但是我相信一次又一次地选择相同的元素可能会证明内存饥饿。有可能吗? //尝试从doc中选择myNewElements。

  • Jsoup将每个文本保存为textnode,包括元素之间的\r\n内容。我想要选择页面上的所有真实文本,并选择它的父文本以删除该父文本中的每一个文本。 我现在有这个: 它不会删除包含\n的所有textnodes,所以它会尝试删除正文,因为这是第一个包含textnodes的元素。 我只想选择所有带有文本的元素,并做element.parent().children().remove(); 也没有按照

  • 假设我有这样的html: 我只想获得之前的 。有没有办法用JSOUP做到这一点呢?我知道我可以把所有的宠物都弄成这样: 但这也包括额外的宠物。我想知道我是只能选择上面的宠物还是只是删除下面的宠物然后使用那个代码?

  • 问题内容: 我有一个按钮,并添加了一些按钮: 我可以通过以下方式删除它们: 如果我想一次删除所有侦听器,或者没有函数引用()怎么办?有没有办法做到这一点,或者我必须一个一个地删除它们? 问题答案: 我认为最快的方法是克隆节点,这将删除所有事件侦听器: 请注意,因为这也会清除所涉及节点的所有子元素上的事件侦听器,因此,如果要保留该侦听器,则必须一次显式删除一个侦听器。