Java替换String中的所有非HTML标记

时间:2011-01-14 13:32:39

标签: java tags html-parsing

如果这些部分不是有效的HTML标记,我想替换String中所有看起来像标记的部分。 标记部分是<>括号中的内容。例如。必须保留<myemail@email.com><hello>,但必须保留<br><div>等。

你知道如何实现这个目标吗?

感谢任何帮助!

欢呼声,

巴拉兹

4 个答案:

答案 0 :(得分:8)

您可以使用JSoup清除HTML。

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

您可以使用其中一个已定义的Whitelists,也可以创建自己的自定义属性,在其中指定希望通过清理器允许的HTML元素。其他一切都被删除了。


您的具体示例如下:

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>

答案 1 :(得分:0)

查看java.util.Scanner类 - 您可以设置分隔符,然后查看字符串是否与HTML标记匹配 - 您必须构建一个应忽略的字符串数组。

答案 2 :(得分:0)

您可能还希望在比较算法中包含结束标记。因此,您可能需要查找正斜杠(html结束标记)并在比较之前将其删除。

答案 3 :(得分:0)

如果您这样做是为了在网页上显示不受信任的数据,那么简单地删除无效标签是不够的。看看OWASP AntiSamy