我的输入是纯文本字符串,要求是删除除少数特定标签之外的所有 html 标签,例如:
<p>
<li>
<u>
<li>
如果这些特定标签具有类似属性class
or id
,我想删除这些属性。
几个例子:
<a href = "#">Link</a> -> Link
<p>paragraph</p> -> <p>paragraph</p>
<p class="class1">paragraph</p> -> <p>paragraph</p>
我经历过这个从字符串中删除 HTML 标签 https://stackoverflow.com/questions/240546/removing-html-from-a-java-string但它并没有完全回答我的问题。
它可以由一组正则表达式处理还是我可以使用一些库?
我尝试了 JSoup,它似乎能够处理所有此类情况。这是示例代码。
public String clean(String unsafe){
Whitelist whitelist = Whitelist.none();
whitelist.addTags(new String[]{"p","br","ul"});
String safe = Jsoup.clean(unsafe, whitelist);
return StringEscapeUtils.unescapeXml(safe);
}
对于输入字符串
String unsafe = "<p class='p1'>paragraph</p>< this is not html > <a link='#'>Link</a> <![CDATA[<sender>John Smith</sender>]]>";
我得到以下输出,这几乎是我所需要的。
<p>paragraph</p>< this is not html > Link <sender>John Smith</sender>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)