2009-12-05 240 views
1

我需要用Java解析CSS文件,并尝试成功使用Batik和CSSParser库。我遇到的问题是,当我遇到IE黑客时,我失去了格式化;在我看来,org.w3c.css.sac使用的DOM将不适应IE Hacks。用Java解析CSS

e.g.-

/* The '\' isn't retained  */ 

someselector { 
    padding: 10px; 
    width: 200px; 
    w\idth: 180px; 
    height: 200px; 
    heigh\t: 180px; 
} 


div.content { 
    width:400px; 
    voice-family: "\"}\""; 
    voice-family:inherit; 
    width:300px; 
} 



/* the space between 'body' and the '.' isn't retained */ 

html>body .content { 
    width:300px; 
} 

有没有人有任何这方面的经验,可以推荐一个很好的解决方案?

+0

折叠'HTML>体.content'为'HTML> body.content'不仅是一个空白的问题,它改变的意义完全选择。 – 2009-12-05 20:46:11

+0

这是反对使用黑客的强项。 – 2009-12-05 20:46:35

+0

马修 - 我意识到,它不只是一个空白问题 - 我需要保留空白,所以选择器将工作,我知道。 – 2009-12-05 20:56:36

回答

2

可能不是您理想的解决方案......但使用IE条件注释并将所有IE代码放入单独的CSS文件以避免使用黑客会更安全,尽管不太方便。

+0

是的,我想到了这一点。在符合W3C标准的CSS上使用CSSParser,然后将IE hacks移动到单独的文件中,并构建我自己的确定性分析引擎。我需要解析的CSS文件大约有3000个选择器,而且只有20-30个黑客。我已经编写了一个简单的实用程序来解析文件,重新生成文件,然后比较这两个文件,并捕获CSSParsers错误形成的样式,以便纠正它们。这个相同的工具可以帮助构建和测试'新'IE黑客解析器。一个好的解决方案,不是我理想的解决方案。 – 2009-12-07 00:29:03

+0

随着时间的推移,没有人提供解决方案,我接受了这个答案。事实上,我基本上按照建议做了。把IE(黑客)放到他们自己的文件中,然后为此写一个解析器。如果没有别的办法,它将风险降至最低,并缩小了开发和测试的范围。 – 2010-02-24 21:51:52

0

我看到这个问题有点晚了,但无论如何它可能会有所帮助。通过ph-css库(https://github.com/phax/ph-css),您可以解析CSS2和CSS3 incl。 IE黑客(*,$等)

心连心,菲利普