首页  >  文章  >  Java  >  使用 Jsoup 将 HTML 转换为纯文本时如何保留换行符?

使用 Jsoup 将 HTML 转换为纯文本时如何保留换行符?

Barbara Streisand
Barbara Streisand原创
2024-10-30 23:24:30992浏览

How Can I Preserve Line Breaks When Converting HTML to Plain Text Using Jsoup?

使用 Jsoup 保留换行符:综合指南

将 HTML 转换为纯文本时,保留换行符对于保持可读性至关重要。 Jsoup 是一个流行的 Java HTML 解析器库,它提供了一种从 HTML 中提取文本同时保留其结构的有效方法。

在本指南中,我们将深入研究使用 Jsoup 的 Jsoup.parse 时保留换行符的具体问题(str).text() 方法。此方法从 HTML 中提取文本内容,但它本身并不保留换行符。

利用 TextNode.getWholeText()

最初,该问题探讨了以下可能性使用 Jsoup 的 TextNode.getWholeText() 方法。然而,这种方法被证明是无效的,因为它不能处理 HTML 标签上下文中的换行符。

有效的解决方案

保留换行符的解决方案在于更全面的方法,涉及在提取文本之前对 HTML 内容进行预处理和后处理。

所提供的代码片段采用以下步骤:

  1. 使用以下命令解析 HTML 字符串Jsoup。
  2. 禁用 HTML 漂亮打印以确保保留换行符。

  3. 末尾添加换行符 (n)标签和

    之前标签。

  4. 用实际的换行符替换序列 n。
  5. 清理修改后的 HTML 以删除任何剩余的格式或标签。

实现

<code class="java">public static String br2nl(String html) {
    if(html==null)
        return html;
    Document document = Jsoup.parse(html);
    document.outputSettings(new Document.OutputSettings().prettyPrint(false));//makes html() preserve linebreaks and spacing
    document.select("br").append("\n");
    document.select("p").prepend("\n\n");
    String s = document.html().replaceAll("\\n", "\n");
    return Jsoup.clean(s, "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
}</code>

满足要求

提供的解决方案满足以下要求:

  • 保留 HTML 中现有的换行符 (n)。
  • 转换

  • 删除结果文本中任何不需要的格式或标签。

通过实施此解决方案,您可以在使用 Jsoup 将 HTML 转换为纯文本时有效保留换行符,确保结果准确且可读。

以上是使用 Jsoup 将 HTML 转换为纯文本时如何保留换行符?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn