首頁  >  文章  >  Java  >  使用 Jsoup 將 HTML 轉換為文字時如何保留換行符號?

使用 Jsoup 將 HTML 轉換為文字時如何保留換行符號?

DDD
DDD原創
2024-10-31 20:37:29147瀏覽

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