Java中的CSS解析器

Java中的CSS解析器,java,css,parsing,Java,Css,Parsing,除了解析HTML之外,我还需要解析CSS,有没有类似的解析器可以创建CSS的文档模型?可能可以用来迭代到节点 我需要做的是在CSS文件中查找并替换“url”。对于html,使用Jsoup很容易做到这一点。然而,我不确定这是否可能与CSS 如果不存在这样的解析器,有哪些选项?可能会对您有所帮助?这将对您有所帮助 也 一个用于在Java中读写CSS2和CSS3文件的CSS库是基于JavaCC语法的,它支持CSS2和CSS3,还允许您解析HTML样式属性 It supports the most c

除了解析HTML之外,我还需要解析CSS,有没有类似的解析器可以创建CSS的
文档
模型?可能可以用来迭代到节点

我需要做的是在CSS文件中查找并替换“url”。对于html,使用Jsoup很容易做到这一点。然而,我不确定这是否可能与CSS

如果不存在这样的解析器,有哪些选项?

可能会对您有所帮助?

这将对您有所帮助


一个用于在Java中读写CSS2和CSS3文件的CSS库是基于JavaCC语法的,它支持CSS2和CSS3,还允许您解析HTML样式属性

It supports the most common hacks "*", "_" and "$" which are not spec compliant
It supports CSS math - the calc() expression
It supports the @page rule
It supports the CSS3 media queries
It supports @viewport rules
It supports @keyframes rules
It supports @supports rules - quite new
It supports the @namespace rules
You can get source location information for the different elements (line + column number for start and end - both for the tag as well as for the complete construct)

我刚刚推出了自己的CSS-streamparser for Java,可在上获得。使此解析器与众不同的是:

  • 它是一个流解析器,因此解析器处理程序将在解析每个项目后立即收到所有新内容的通知
  • 全面支持所有当前记录的At规则
  • 自定义类
    TokenSequence
    Token
    简化了处理选择器等的过程
  • 易于使用和理解
  • 用于验证或更高级的应用程序
  • 可伸缩性:设计为能够处理对CSS定义的更改
对于您的问题,只需使用基本的解析技术:

try
{
    //First get the input stream. For example, from a file
    InputStream is = new FileInputStream(new File("/path/to/my/CSS/main.css"));

    //Then parse        
    CSSParser parser = new CSSParser(is, new DefaultCSSHandler());
    parser.parse();
}
catch (Throwable t)
{
    t.printStackTrace();
}

但是重写
DefaultCSSHandler
中的一些方法来查找您需要的标识符。

我得到了java.lang.NoClassDefFoundError:org/w3c/css/sac/DocumentHandler当使用这个css解析器时,除了cssparser-0.9.6.jar之外,我还需要额外的jar吗?您可能需要.cool,您是否在您的一个项目中使用此语法?它与@xybrek相比如何?@xybrek是的,我目前正在使用此语法分析器开发对的CSS支持。我以前偶然发现了链接的CSS解析器,并发现它令人困惑。它还使用了很多库,如果我记得的话,很难找到这些库。我的解析器不使用SAC,它是独立的,所以一旦下载它,就很容易运行。此外,我确保做好文档记录,因为它不仅仅用于验证程序,所以应该很容易理解如何以与xml解析类似的方式处理解析数据。