ホームページ  >  記事  >  Java  >  Jsoup を使用して HTML をプレーン テキストに変換するときに改行を保持するにはどうすればよいですか?

Jsoup を使用して HTML をプレーン テキストに変換するときに改行を保持するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-31 01:15:29162ブラウズ

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

Jsoup の HTML からプレーン テキストへの変換で改行を保持する

Jsoup は HTML を操作するための強力なツールを提供しますが、デフォルトでは HTML からプレーン テキストへの変換が行われます。テキストは改行を結合して連続テキストとしてレンダリングできます。これらの区切りを保持するために、Jsoup を利用する方法は次のとおりです:

改行保持のためのカスタム関数:

提供された Java コード スニペットでは、Jsoup の text() を利用するカスタム関数 noTags が導入されています。入力 HTML から HTML タグを削除するメソッド。ただし、改行は維持されません。

テキスト全体抽出による機能の強化:

Jsoup の JsonNode クラスは、改行を尊重しながらテキスト コンテンツを抽出する getWholeText() メソッドを提供します。このメソッドを使用すると、noTags 関数を改善できます:

<code class="java">public String noTags(String str) {
    return Jsoup.parse(str).wholeText();
}</code>

改行保持の実装:

改行を保持するより洗練されたソリューションの場合:

<code class="java">public static String br2nl(String html) {
    if (html == null)
        return html;
    Document document = Jsoup.parse(html);
    // Suppress pretty printing to preserve line breaks and spacing
    document.outputSettings(new Document.OutputSettings().prettyPrint(false));
    // Append line breaks for <br> tags
    document.select("br").append("\n");
    // Prepend line breaks for <p> tags
    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>

このカスタム関数は、改行が確実に保持され、目的の出力に合わせて配置されます。これは 2 つの重要な要件を満たしています。

  1. 元の改行 (n) は保持されます。

  2. タグは改行 (n) に変換されます。

以上がJsoup を使用して HTML をプレーン テキストに変換するときに改行を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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