0

我有一个字符串,我想验证它是否是有效的 CSS 值。在 AntiSamy 的文档中,我发现我可以使用 CSSValidator.isValidProperty ( http://javadox.com/org.owasp/antisamy/1.4/org/owasp/validator/css/CssValidator ) 来做到这一点。但是,第二个参数的类型需要 LexicalUnit。

还有另一种方法可以使用 AnitSamy 验证字符串吗?

4

1 回答 1

1

我认为你想要的是 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 方面做得很好。

于 2017-01-18T22:05:39.663 回答