2011-01-14 13 views
4

有効なHTMLタグでない場合、String内のすべてのタグ付き部分を置き換えたいと思います。 タグつき部分は、<>のかっこで囲まれたものです。例えば。 <[email protected]>または<hello>であるが、<br>,<div>などを保持しなければならない。JavaはString以外のHTMLタグをすべて置き換えます。

これを達成する方法はありますか?

ご協力いただきましてありがとうございます。

歓声、

バラージュ

+0

は、交換または削除しますか?予想される出力を表示してください。 – dogbane

+0

"one two three four five

six
" to "one two three four five
six
" - 空のStringに置き換えてください。 –

答えて

8

JSoupを使用してHTMLを消去できます。あなたが定義されWhitelistsのいずれかを使用するか、またはあなたはあなたがクリーナーの通過を許可したいHTML要素を指定した独自のカスタムを作成することができ

String cleaned = Jsoup.clean(html, Whitelist.relaxed()); 

。それ以外はすべて削除されます。


あなたの具体的な例は次のようになります。

String html = "one two three <blabla> four <text> five <div class=\"bold\">six</div>"; 
String cleaned = Jsoup.clean(html, Whitelist.relaxed().addAttributes("div", "class")); 
System.out.println(cleaned); 

出力:

one two three four five 
<div class="bold"> 
six 
</div> 
+0

これは私が必要なものです!ありがとう! –

0

はjava.util.Scannerクラスを見てください - あなたは、文字列は、HTMLタグやないと一致するかどうかを確認区切り文字を設定することができます - あなたは、Arrayを構築する必要があります無視すべき文字列の数。

+0

私は自分でArrayを構築したくなかったので、http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/text/に似た既存のEnumを探していました。 html/HTML.Tag.html –

+0

この記事と同様のもの - > http://stackoverflow.com/questions/240546/removing-html-from-a-java-string – ManseUK

+0

はい、私もそれを見ました。だから、私の問題はHTMLタグを取り除きたくないという点を除いて似ています。 –

0

また、比較アルゴリズムに終了タグを含めることもできます。だから、スラッシュ(html endタグ)を探して比較する前にそれを取り除きたいかもしれません。

0

ウェブページに信頼できないデータを表示する場合は、無効なタグを簡単に削除するだけでは不十分です。 OWASP AntiSamyをご覧ください。

+0

ヒントのためにありがとう、私はそれを見てみるつもりですが、今回私は彼らを簡単に削除したいと思います。もはや、それほどではありません。 –

関連する問題