我有一个字符串,我想验证它是否是有效的CSS值。在AntiSamy的文档中,我发现我也许能够使用CSSValidator.isValidProperty (http://javadox.com/org.owasp/antisamy/1.4/org/owasp/validator/css/CssValidator)来实现这一点。但是,第二个参数的类型需要LexicalUnit。
有没有其他方法可以用AnitSamy验证字符串?
发布于 2017-01-19 06:05:40
我想你想要的是CssScanner。
/****** pull out style tag from html *****/
Pattern p = Pattern.compile("<style>([\\s\\S]+?)</style>");
Matcher m = p.matcher(validHTML);
// if we find a match, get the group
if (m.find()) {
// get the matching group
codeGroup = m.group(1);
}
/****** block for checking all css for validity *****/
InternalPolicy policy = null;
try {
policy = (InternalPolicy) InternalPolicy.getInstance("antisamy-ebay.xml");
} catch (PolicyException e) {
e.printStackTrace();
}
ResourceBundle messages = ResourceBundle.getBundle("AntiSamy", Locale.getDefault());
CssScanner scanner = new CssScanner(policy, messages);
CleanResults results = scanner.scanStyleSheet(codeGroup, Integer.MAX_VALUE);
validCSS = results.getCleanHTML().toString();这就是代码中对我起作用的部分。如果这一切对你无效,请让我知道,我在代码的顶部声明了变量,因为我也在这里处理html验证。所以有些变量不在这段代码中。但它应该为你指明正确的方向。此外,您需要一个适当的策略,我选择了易趣策略,这将指导白名单的css将允许的结果输出。我没有使用过CssValidator,所以我不确定它们之间的比较,但CssScanner在返回干净的css方面做得很好。
https://stackoverflow.com/questions/39566495
复制相似问题