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

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

DDD
DDD原创
2024-11-03 11:02:29239浏览

How to Preserve Line Breaks When Converting HTML to Plain Text with Jsoup?

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

将 HTML 内容转换为纯文本时,保留换行符以提高可读性至关重要。默认情况下,Jsoup 的 text() 方法会去除换行符,这可能会破坏输出的格式。幸运的是,有一种解决方法可以利用 getWholeText() 方法来保留换行符。

使用 getWholeText() 来保留换行符

Jsoup 中的 getWholeText() 方法返回文档的整个文本内容,包括换行符。要使用此方法,您可以按照以下步骤操作:

  1. 使用 Jsoup 解析 HTML 字符串:

    <code class="java">Document doc = Jsoup.parse(htmlString);</code>
  2. 迭代文档的元素并提取文本:

    <code class="java">for (Element element : doc.getAllElements()) {
        text += element.getWholeText().trim();
        if (element.tagName().equals("br")) {
            text += "\n";
        }
    }</code>

通过在每个
标签后添加换行符,您可以确保在输出文本中保留换行符。

高级解决方案:br2nl() 方法

上述解决方案有效,但可以通过合并以下实用方法进行改进:

<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));
    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 中的换行符。它通过有选择地在 HTML 元素前面添加换行符,然后执行正则表达式替换以将转义的换行符替换为实际的换行符来实现此目的。

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

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