C#有CSS解析器吗?

C#有CSS解析器吗?,c#,css,parsing,C#,Css,Parsing,我的程序需要将css文件解析为内存中的对象格式。关于如何做到这一点有什么建议吗?GitHub上的ExCSS(支持CSS2.1和CSS3): 这是代码项目文章的较新版本:搜索速度稍慢,会出现嵌入(以防博客死掉)的博客帖子“”。您可以找到另一篇特别针对C的文章,带有示例源。我使用CSS 2.1规范中指定的语法编写了一篇文章。我现在也发布了它:详细信息,请参见GoldParser有一个CSS语法文件: GoldParser很容易包含在C#项目中,并生成一个真正的LALR解析器——而不是一些正则表达式

我的程序需要将css文件解析为内存中的对象格式。关于如何做到这一点有什么建议吗?

GitHub上的ExCSS(支持CSS2.1和CSS3):


这是代码项目文章的较新版本:

搜索速度稍慢,会出现嵌入(以防博客死掉)的博客帖子“”。

您可以找到另一篇特别针对C的文章,带有示例源。

我使用CSS 2.1规范中指定的语法编写了一篇文章。我现在也发布了它:详细信息,请参见

GoldParser有一个CSS语法文件:



GoldParser很容易包含在C#项目中,并生成一个真正的LALR解析器——而不是一些正则表达式黑客。

您尝试过这个吗?它是用C#编写的,解析CSS3语法,并在MIT风格的许可下发布。

LALR解析器-他们网站上没有一些正则表达式信息“黄金语法基于Backus Naur形式和正则表达式”很好,正则表达式很酷。手动滚动解析器不是这是CSS语法的一个非常简化的版本。相反,我移植了CSS参考语法(来自CSS 2.1规范)来使用黄金解析器。。。我已经编写了一个C#程序集来实现它的其余部分(使用解析器输出来计算DOM中元素的样式,使用规则专用性、继承、默认值等)。Goldparser很不错,但速度非常慢。即使在速度优化的C++代码中,解析15000行代码需要10秒。如果您将其与PHP解析器的速度相比较,这是非常慢的。我们其他人可以尝试/购买吗?发送电子邮件:我的gmail id是“cwellsx”。看起来像是一堆坏东西中最好的(使用
goto
statements-ouch进行递归)@B:
goto
是避免递归的好方法,因为它可以避免重新输入函数。当迭代次数可能很高时,这是避免堆栈溢出风险的一个很好的选择……因为当迭代次数可能很高时,可能会出现堆栈溢出风险我不明白为什么这个问题被解决了。它得到了很多人的投票,他们显然也在想同样的事情。就因为不同的人可能对最佳解决方案有不同的意见,为其他有相同问题的人列出这些意见是多么好的一个地方啊。@JonathanWood-我完全同意,但政策是工具建议是离题的,它要求提供工具建议。因此,即使令人沮丧,结束这个问题也是合适的。我已经重写了这个问题,这样它就可以reopened@Softlion,通过这样做,你似乎已经否定了所有六个现有答案,其中没有一个是关于Linq的。在我看来,最好是回滚,发布一个新问题,然后在对这个问题的评论中链接到这个新问题。你是对的,我删除了“Linq”,因为它在最初的问题中不存在。它使用正则表达式,它不会因为复杂的csswish而剪切它,它会将媒体查询解析成一个对象模型。这样做并不特别困难,但它只提供了一个字符串。它可以工作,但发现了一些它无法解析的东西:
calc(50vw-23em)
变成
calc(50vw=23em)
/
3rem
变为
3
/
z-index:2147483647
变为
z-index:2.147484E+09
/
*显示:无
变为
显示:无
它也不处理
@-ms视口
在输出中返回
{System.Collections.Generic.List`1[ExCSS.RuleSet]