Jsoupを使用する際の改行の保持
1. 概要
このチュートリアルでは、Jsoupを使用してHTMLをプレーンテキストに解析するときに改行を保持するさまざまな方法について簡単に説明します。 改行に関連する改行を保持する方法について説明します( \ n )文字、および関連する文字
と
タグ。
2. HTMLテキストの解析中に\nを保持する
Jsoupは、デフォルトでHTMLテキストから改行文字(\ n)を削除し、各改行をスペース文字に置き換えます。
ただし、Jsoupが改行文字を削除しないようにするために、Jsoupの OutputSetting を変更して、プリティプリントを無効にすることができます。 pretty-printが無効になっている場合、HTML出力メソッドは出力を再フォーマットせず、出力は入力のようになります:
Document.OutputSettings outputSettings = new Document.OutputSettings();
outputSettings.prettyPrint(false);
さらに、 Jsoup#clean を使用して、文字列からすべてのHTMLタグを削除できます。
String strHTML = "<html><body>Hello\nworld</body></html>";
String strWithNewLines = Jsoup.clean(strHTML, "", Whitelist.none(), outputSettings);
出力文字列strWithNewLinesがどのように見えるかを見てみましょう。
assertEquals("Hello\nworld", strWithNewLines);
したがって、 Jsoup # clean をホワイトリスト# none で呼び出し、Jsoupのプリティプリント出力設定を無効にすると、改行文字に関連付けられた改行を保持することができます。
他に何ができるか見てみましょう!
3. に関連する改行の保持
と
タグ
Jsoup#cleanメソッドを使用してHTMLテキストをクリーンアップするときに、次のようなHTMLタグによって作成された改行を削除します。
と
。
これらのタグに関連付けられた改行を保持するには、最初にHTML文字列から JsoupDocumentを作成する必要があります。
String strHTML = "<html><body>Hello<br>World<p>Paragraph</p></body></html>";
Document jsoupDoc = Jsoup.parse(strHTML);
次に、改行文字を前に追加します
と
タグ—繰り返しになりますが、プリティプリント出力設定も無効にしています。
Document.OutputSettings outputSettings = new Document.OutputSettings();
outputSettings.prettyPrint(false);
jsoupDoc.outputSettings(outputSettings);
jsoupDoc.select("br").before("\\n");
jsoupDoc.select("p").before("\\n");
ここでは、Jsoup Documentのselectメソッドと、 before メソッドを使用して、改行文字を付加しました。
その後、 jsoupDoc からHTML文字列を取得し、元の新しい行を保持します。
String str = jsoupDoc.html().replaceAll("\\\\n", "\n");
最後に、 Jsoup # clean を呼び出し、ホワイトリスト# none を使用して、プリティプリント出力設定を無効にします。
String strWithNewLines = Jsoup.clean(str, "", Whitelist.none(), outputSettings);
また、出力文字列strWithNewLinesは次のようになります。
assertEquals("Hello\nWorld\nParagraph", strWithNewLines);
したがって、前に付けることによって
と
改行文字を含むHTMLタグ、およびJsoupのきれいな印刷出力設定を無効にすると、それらに関連付けられた改行を保持できます。
4. 結論
この短い記事では、改行に関連付けられた改行を保持する方法を学びました( \ n )文字と
と
Jsoupを使用してHTMLをプレーンテキストに解析するときのタグ。
いつものように、これらのコードサンプルはすべてGitHubで利用できます。