【问题标题】:jsoup clean html entitiesjsoup 清理 html 实体
【发布时间】:2014-01-28 20:34:46
【问题描述】:
我需要一些帮助来使用 jsoup 清理用户输入,我想删除所有已知的 HTML 标记,但如果没有真正的 HTML 标记的一部分,则让 < 或 >。
Jsoup.clean("<b>test</b> te<st <test >test", Whitelist.none())
当前输出是
test tetest
我想要:
test te<st <test >test
感谢您的帮助。
【问题讨论】:
标签:
java
html
parsing
jsoup
【解决方案1】:
Jsoup 不提供这种功能。检查下面的代码。
import java.util.ArrayList;
import java.util.List;
public class Main {
public static String removeTags(List<String> tags, String source) {
if(tags == null || tags.size() == 0) return source;
StringBuilder strb = new StringBuilder();
for(String tag : tags) {
strb.append(String.format("</?%s.*?>|", tag));
}
return source.replaceAll(strb.substring(0, strb.length() - 1), "");
//strb example : "</?span.*?>|</?em.*?>"
}
public static void main(String[] args) {
try {
String str = "<b>testj</b> te<st <test >test";
List<String> tags = new ArrayList<String>();
tags.add("b");
System.out.println(removeTags(tags, str));
} catch (Exception e) {
e.printStackTrace();
}
}
}