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

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

Barbara Streisand
Barbara Streisand原創
2024-10-30 23:24:30990瀏覽

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