4

Jsoupを使用してhtml要素からすべてのインラインスタイルとその他の属性(class、onclick)を削除するにはどうすればよいですか?

サンプル入力:

<div style="padding-top:25px;" onclick="javascript:alert('hi');">
This is a sample div <span class='sampleclass'> This is a sample span </span>
</div>

サンプル出力:

<div>This is a sample div <span> This is a sample span </span> </div>

私のコード (これは正しい方法ですか、それとも他のより良い方法はありますか?)

Document doc = Jsoup.parse(html);
Elements el = doc.getAllElements();
for (Element e : el) {
    Attributes at = e.attributes();
    for (Attribute a : at) {    
        e.removeAttr(a.getKey());    
    }
}
4

1 に答える 1

11

はい、確かに 1 つの方法は、要素を反復処理して呼び出すことですremoveAttr();

jsoup を使用する別の方法は、Whitelistクラス ( docsを参照) を利用することです。これを関数で使用して、Jsoup.clean()指定されていないタグまたは属性をドキュメントから削除できます。

例えば:

String html = "<html><head></head><body><div style='padding-top:25px;' onclick='javascript.alert('hi');'>This is a sample div <span class='sampleclass'>This is a simple span</span></div></body></html>";

Whitelist wl = Whitelist.simpleText();
wl.addTags("div", "span"); // add additional tags here as necessary
String clean = Jsoup.clean(html, wl);
System.out.println(clean);

次の出力が得られます。

11-05 19:56:39.302: I/System.out(414): <div>
11-05 19:56:39.302: I/System.out(414):  This is a sample div 
11-05 19:56:39.302: I/System.out(414):  <span>This is a simple span</span>
11-05 19:56:39.302: I/System.out(414): </div>
于 2013-11-05T10:00:44.503 に答える