Jsoup で HTML をプレーン テキストに変換するときに改行を保持する方法は?

DDD
リリース: 2024-11-03 11:02:29
オリジナル
234 人が閲覧しました

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

Jsoup を使用して HTML をプレーン テキストに変換するときに改行を維持する

HTML コンテンツをプレーン テキストに変換する場合、読みやすくするために改行を維持することが重要です。デフォルトでは、Jsoup の text() メソッドは改行を削除するため、出力の書式設定が崩れる可能性があります。幸いなことに、getWholeText() メソッドを利用して改行を保持する回避策があります。

getWholeText() を使用して改行を保持する

Jsoup の getWholeText() メソッド改行を含むドキュメントのテキスト内容全体を返します。この方法を利用するには、次の手順に従います。

  1. Jsoup を使用して HTML 文字列を解析します。

    <code class="java">Document doc = Jsoup.parse(htmlString);</code>
    ログイン後にコピー
  2. ドキュメントの要素を反復処理します。テキストを抽出します:

    <code class="java">for (Element element : doc.getAllElements()) {
        text += element.getWholeText().trim();
        if (element.tagName().equals("br")) {
            text += "\n";
        }
    }</code>
    ログイン後にコピー


タグの後に改行を追加すると、出力テキストで改行が確実に保持されます。

高度な解決策: br2nl() メソッド

上記の解決策は効果的に機能しますが、次のユーティリティ メソッドを組み込むことで改善できます:

<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>
ログイン後にコピー

このメソッドは行を保持するだけではありません

で区切ります。タグを使用するだけでなく、元の HTML 内の改行も確実に保持されます。これは、HTML 要素の前後に改行を選択的に追加し、正規表現置換を実行してエスケープされた改行を実際の改行に置き換えることによって行われます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート