【发布时间】:2012-03-10 23:52:42
【问题描述】:
我正在评估 jsoup 的功能,该功能将清理(但不删除!)非白名单标签。假设只允许<b> 标签,所以下面的输入
foo <b>bar</b> <script onLoad='stealYourCookies();'>baz</script>
必须产生以下内容:
foo <b>bar</b> <script onLoad='stealYourCookies();'>baz</script>
我发现 jsoup 存在以下问题/疑问:
-
document.getAllElements()始终假定<html>、<head>和<body>。是的,我可以打电话给document.body().getAllElements(),但关键是我不知道我的来源是完整的 HTML 文档还是只是正文——我希望结果的形状和形式与它进来的一样;李> - 如何将
&lt;script&gt;...&lt;/script&gt;替换为&lt;script&gt;...&lt;/script&gt;?我只想用转义实体替换括号,不想更改任何属性等。Node.replaceWith听起来有点矫枉过正。 - 是否可以完全关闭漂亮的打印(例如插入新行等)?
或者我应该使用另一个框架?到目前为止,我已经查看了 htmlcleaner,但给出的示例并不表明我想要的功能得到支持。
【问题讨论】:
标签: java html jsoup xss htmlcleaner