Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mengekalkan Pemisah Baris Apabila Menukar HTML kepada Teks Biasa dengan Jsoup?

Bagaimana untuk Mengekalkan Pemisah Baris Apabila Menukar HTML kepada Teks Biasa dengan Jsoup?

DDD
DDDasal
2024-11-03 11:02:29230semak imbas

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

Memelihara Pemisah Baris Apabila Menukar HTML kepada Teks Biasa dengan Jsoup

Apabila menukar kandungan HTML kepada teks biasa, adalah penting untuk mengekalkan pemisah baris untuk kebolehbacaan . Secara lalai, kaedah text() Jsoup menjalurkan pemisah baris, yang berpotensi mengganggu pemformatan output anda. Nasib baik, terdapat penyelesaian yang memanfaatkan kaedah getWholeText() untuk mengekalkan pemisah baris.

Menggunakan getWholeText() untuk Mengekalkan Pemisah Baris

Kaedah getWholeText() dalam Jsoup mengembalikan keseluruhan kandungan teks dokumen, termasuk pemisah baris. Untuk menggunakan kaedah ini, anda boleh mengikuti langkah berikut:

  1. Hilang rentetan HTML anda menggunakan Jsoup:

    <code class="java">Document doc = Jsoup.parse(htmlString);</code>
  2. Lelaran pada elemen dokumen dan ekstrak teks:

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

Dengan menambahkan pemisah baris selepas setiap teg
, anda boleh memastikan pemisah baris dikekalkan dalam teks output anda.

Penyelesaian Lanjutan: Kaedah br2nl()

Penyelesaian di atas berfungsi dengan berkesan tetapi boleh diperbaiki dengan menggabungkan kaedah utiliti berikut:

<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>

Kaedah ini bukan sahaja mengekalkan talian rehat daripada
dan

tag tetapi juga memastikan bahawa baris baharu dalam HTML asal dikekalkan. Ia melakukan ini dengan menambah dan menambahkan pemisah baris secara selektif pada elemen HTML dan kemudian melakukan penggantian regex untuk menggantikan pemisah baris yang terlepas dengan baris baharu yang sebenar.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Pemisah Baris Apabila Menukar HTML kepada Teks Biasa dengan Jsoup?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn