1

以下のJavaのコンテンツがあり、HTMLタグのみを削除し、改行文字は削除しません。

<p>test1 <b>test2</b> test 3 </p> //line 1
<p>test4 </p> //line 2

上記のコンテンツをテキストリッチエディタで開くと、1行目と2行目が異なる行に表示されます(</p>タグは表示されません)が、メモ帳ではコンテンツがタグとともに表示され</p>ます。使用したすべてのhtmlタグを削除するには

Jsoup.parse(aboveContent).text()

すべてのhtml文字を削除します。ただし、メモ帳の1行目と2行目はすべて同じ行に表示されます。どういうわけか、Jsoupは改行文字も削除します。

私が試したこと:-

また、htmlタグを置き換え</p>てから削除してみました\r\n

 Jsoup.parse(contentWith\r\n-Insteadof-</p>Tag ).text()

しかし、それでもJsoupは同じ行の行末文字を削除します(デバッガーの場合と同様に、line1とline2の両方が表示されます)。

JsoupでHTML文字のみを削除し、改行文字は削除しないようにするにはどうすればよいですか?

4

2 に答える 2

15

これを行うこともできます:

public static String cleanNoMarkup(String input) {
    final Document.OutputSettings outputSettings = new Document.OutputSettings().prettyPrint(false);
    String output = Jsoup.clean(input, "", Whitelist.none(), outputSettings);
    return output;

}

ここで重要なことは次のとおりです。1。Whitelist.none()-マークアップは許可されません2..prettyPrint(false)-改行は削除されません

于 2013-05-23T06:42:18.477 に答える
4

text()すべてのホワイトペース文字を削除するため、1行になります。ただし、を使用してStringBuilder各行をそこに挿入できます。

final String html = "<p>test1 <b>test2</b> test 3 </p>"
                    + "<p>test4 </p>";

Document doc = Jsoup.parse(html);        
StringBuilder sb = new StringBuilder();


for( Element element : doc.select("p") )
{
    /*
     * element.text() returns the text of this element (= without tags).
     */
    sb.append(element.text()).append('\n');
}

System.out.println(sb.toString().trim());

出力:

test1 test2 test 3
test4
于 2013-01-22T10:44:53.180 に答える