ホームページ  >  記事  >  Java  >  Jsoupを使用してHTMLをテキストに変換するときに改行を保持する方法は?

Jsoupを使用してHTMLをテキストに変換するときに改行を保持する方法は?

DDD
DDDオリジナル
2024-10-31 20:37:29219ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。