我有一个字符串,我想验证它是否是有效的 CSS 值。在 AntiSamy 的文档中,我发现我可以使用 CSSValidator.isValidProperty ( http://javadox.com/org.owasp/antisamy/1.4/org/owasp/validator/css/CssValidator ) 来做到这一点。但是,第二个参数的类型需要 LexicalUnit。
还有另一种方法可以使用 AnitSamy 验证字符串吗?
我有一个字符串,我想验证它是否是有效的 CSS 值。在 AntiSamy 的文档中,我发现我可以使用 CSSValidator.isValidProperty ( http://javadox.com/org.owasp/antisamy/1.4/org/owasp/validator/css/CssValidator ) 来做到这一点。但是,第二个参数的类型需要 LexicalUnit。
还有另一种方法可以使用 AnitSamy 验证字符串吗?
我认为你想要的是 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 验证。所以有些变量不在这段代码中。但它应该为您指明正确的方向。此外,您需要一个适当的政策,我选择了 ebay 政策,这指导了 css 允许结果输出的白名单。我没有使用过 CssValidator,所以我不确定它们如何比较,但是 CssScanner 在回馈干净的 css 方面做得很好。