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

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

DDD
DDD原创
2024-10-31 20:37:29266浏览

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

使用 Jsoup 在 HTML 到文本转换中保留换行符

使用 jsoup 将 HTML 转换为纯文本时,可以保留换行符对于保持输出的可读性和结构至关重要。默认情况下,jsoup 的 text() 方法不会保留 HTML 代码中存在的换行符。

解决方案:

要有效保留换行符,请使用 br2nl()方法,它包含以下增强功能:

  1. 保留现有换行符:如果原始 HTML 包含换行符 (n),它们将保留在输出中。
  2. 转换

    标签: 换行符是通过在
    的内容后附加 n 来引入的。标签。另外,nn 被添加到

    的内容之前。标记来表示新段落。

  3. 后处理: 呈现修改后的 HTML,并将任何剩余的转义换行符 (\n) 转换为实际换行符 (n)。为了确保正确处理其他特殊字符,使用 Jsoup.clean() 清理生成的字符串。

用法:

<code class="java">import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class LineBreakPreserver {

    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));
    }

    public static void main(String[] args) {
        String html = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN \">" +
                "<HTML> <HEAD> <TITLE></TITLE> <style>body{ font-size: 12px;font-family: verdana, arial, helvetica, sans-serif;}</style> </HEAD> <BODY><p><b>hello world</b></p><p><br><b>yo</b> <a href=\"http://google.com\">googlez</a></p></BODY> </HTML> ";

        String result = br2nl(html);
        System.out.println(result);
    }
}</code>

输出:

hello world
yo googlez

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

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