假设字符串,而没有正在解析HTML文档(根据您的问题)此方法将起作用:
public String escapeHtml(String source) {
Document doc = Jsoup.parseBodyFragment(source);
Elements elements = doc.select("b");
for (Element element : elements) {
element.replaceWith(new TextNode(element.toString(),""));
}
return Jsoup.clean(doc.body().toString(), new Whitelist().addTags("a").addAttributes("a", "href", "name", "rel", "target"));
}
您可以使“b”标签成为一个参数,以传递您希望转义的标签列表。
相关的传球JUnit测试:
@Test
public void testHtmlEscaping() throws Exception {
String source = "This is REALLY dirty code from haxors-r-us";
String expected = "This is <b>REALLY</b> dirty code from \nhaxors-r-us";
String transformed = transformer.escapeHtml(source);
assertEquals(transformed, expected);
}
请注意,我说在我的测试的“预期”的字符串行回车“\ n”你的“”标签之前,因为JSoup格式的页面。