有没有适用于C#的CSS解析器?

69

我的程序需要将 CSS 文件解析成内存对象格式。有什么建议吗?


26
我不明白为什么这个问题被关闭了。它得到了很多人的投票,这些人显然也在思考同样的问题。仅仅因为不同的人可能对最佳解决方案有不同的意见,这恰恰是一个很好的地方,可以列出这些意见供其他有同样问题的人参考。 - Jonathan Wood
3
@JonathanWood - 我完全同意,但是该政策是工具推荐不在主题范围内,而这个问题正在寻求工具推荐。因此,即使令人沮丧,关闭它是适当的。 - Bobson
我已经重新修改了问题,以便它可以重新打开。 - Softlion
@Softlion,这样做似乎使现有的六个答案都失效了,因为它们都没有涉及到Linq。在我看来,最好的做法是回滚,发布一个新问题,然后在此问题的评论中链接到该新问题。 - Peter Taylor
你是正确的,我已经删除了"Linq",因为它并没有在最初的问题中提及。 - Softlion
当我在寻找C#中的CSS解析器时,偶然发现了这个问题,因此它显然非常有价值。 - Anders Lindén
6个回答

28

希望它能将媒体查询解析为对象模型。这并不是特别难做,但它只会给你一个字符串。 - Simon_Weaver
1
它能够工作,但是发现了一些它无法解析的内容:calc(50vw - 23em) 变成了 calc(50vw = 23em) / 3rem 变成了 3 / z-index: 2147483647 变成了 z-index: 2.147484E+09 / *display: none 变成了 display: none - Simon_Weaver
1
它也无法处理 @-ms-viewport,在输出中返回 {System.Collections.Generic.List\1[ExCSS.RuleSet]}`。 - Herman Kan

8

...啊,它挂了。 - Alex from Jitbit

6

LALR解析器 - 不是正则表达式他们网站上的信息 “GOLD语法基于Backus-Naur形式和正则表达式” - Justin
1
好的观点,正则表达式很棒。手工编写解析器并不是 - matt woodard
这是CSS语法的一个非常简化的版本。相反,我将CSS参考语法(来自CSS 2.1规范)移植到GOLD解析器中...并编写了一个C#程序集来实现其余部分(使用解析器输出来计算DOM中元素的样式,使用规则特定性、继承、默认值等)。 - ChrisW
1
Goldparser很好,但是它非常慢。即使在速度优化的C++代码中,它解析15000行代码需要10秒钟。如果与PHP解析器的速度相比,这非常慢。 - Elmue

3

2
看起来是一堆糟糕选择中最好的一个(使用“goto”语句的递归 - 真痛苦) - satnhak
4
goto是一个很好的避免递归的方法,因为它避免了重新进入函数。当你有可能需要大量迭代时,它是避免栈溢出的一个很好的替代方案。 - Triynko
因为当您有潜在的高迭代次数时,存在堆栈溢出的风险。 :D - James World
1
尾递归来拯救... - Basic

1

1
酷。它对我们其他人来说是可用的,可以尝试/购买吗? - Jørn Schou-Rode
发送电子邮件:我的 Gmail ID 是“cwellsx”。 - ChrisW

0

在这里你可以找到一个专门针对C#的样例源代码。


这里使用正则表达式并不能胜任复杂的CSS。 - Simon_Weaver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接