C# 是否有一个类似jQuery的CSS/HTML选择器可以在C中使用?

C# 是否有一个类似jQuery的CSS/HTML选择器可以在C中使用?,c#,jquery,css,jquery-selectors,css-selectors,C#,Jquery,Css,Jquery Selectors,Css Selectors,我想知道是否有一个类似jQuery的css选择器可以在C中使用 目前,我正在使用正则表达式解析一些html字符串,并认为最好在jQuery中使用类似css选择器的东西来匹配我所需的元素。对于XML,您可以使用XPath…我不完全清楚您试图实现什么,但是如果您有一个试图从中提取数据的html文档,我建议加载一个,然后查询对象以提取所需元素就变得相当简单了 我上面链接的解析器允许使用XPath查询,这听起来像您正在寻找的 如果我误解了,请告诉我。不太像jQuery,但这可能会有帮助: 你肯定会看到@

我想知道是否有一个类似jQuery的css选择器可以在C中使用


目前,我正在使用正则表达式解析一些html字符串,并认为最好在jQuery中使用类似css选择器的东西来匹配我所需的元素。

对于XML,您可以使用XPath…

我不完全清楚您试图实现什么,但是如果您有一个试图从中提取数据的html文档,我建议加载一个,然后查询对象以提取所需元素就变得相当简单了

我上面链接的解析器允许使用XPath查询,这听起来像您正在寻找的


如果我误解了,请告诉我。

不太像jQuery,但这可能会有帮助:

你肯定会看到@jamietre's。看看他对这个问题的回答

并提供类似的功能,但这些项目似乎已被放弃。

2012年10月18日更新

现在是1.3版。最新版本包含HTML5解析器的C端口。因此,CsQuery现在将生成一个DOM,该DOM使用HTML5规范进行无效标记处理,并且完全符合标准

原始答案

老问题,新答案。我最近发布了CsQuery的1.1版,这是一个用C编写的.NET4的jQuery端口,我已经研究了大约一年了。也在CsQuery上

当前版本实现了所有CSS2和CSS3选择器、所有jQuery扩展和所有jQueryDOM操作方法。它具有广泛的测试覆盖范围,包括jQuery和sizzle jQuery CSS选择引擎的所有测试。我还包括了一些与Fizzler直接比较的性能测试;在大多数情况下,CsQuery的性能大大优于它。例外情况是,在Fizzler速度更快的地方加载HTML;我想这是因为fizzler没有建立索引。不过,在你第一次选择之后,你就可以重新获得时间

github站点上有文档,但基本上是这样工作的:

从HTML字符串创建

CQ dom = CQ.Create(htmlString);
从web同步加载

CQ dom = CQ.CreateFromUrl("http://www.jquery.com");
异步加载非阻塞

CQ.CreateFromUrlAsync("http://www.jquery.com", responseSuccess => {
    Dom = response.Dom;        
}, responseFail => {
    ..
});
运行选择器并执行jQuery操作

var childSpans = dom["div > span"];
childSpans.AddClass("myclass");
CQ对象类似于jQuery对象。上面使用的属性索引器是默认方法,如$

输出:

string html = dom.Render();


哦,是的,我忘了提那件事了。我想要一些类似css选择器的东西,因为它简单明了。如果您想将XPath与潜在的非格式良好的HTML一起使用,请查看HTML Agility Pack。后来我开始使用CsQuery,现在我更喜欢它。我可以知道你指的是什么解析器吗?我只希望像Doc.selectdiv.foo这样的东西返回所有div元素,并具有foo类。我添加了一个指向文本的链接,这指向了一个关于解析HTML的问题。特别是,我在过去使用的HTML Agility pack解析器加载HTML文档并对其进行查询非常成功。。。我几天前刚刚看过html敏捷包。但是,它仍然使用XPath进行匹配。并不是我不喜欢XPath。但是,css选择器语法的简洁性在imo中要好得多。我可能会使用LINQ-to-Objects。但是正确的-没有选择器那么干净。所以,我想目前还没有类似的东西。XPath查询如何不能满足您的需求?使用XML或HTML解析器将字符串加载到DOM对象中,并根据您喜欢的内容查询元素。就像jQuery一样。如果您想要一个更易于grep的查询结构,您是否尝试过使用linq查询?请注意:Sharp查询是GPL。Fizzler是LGPL,对业务更友好。看起来Fizzler已经测试了2年,没有任何活动。尖锐的查询不太好,状态不清楚。请考虑一下“JuiTre”的回答而不是我的。他有一个绝妙的解决方案!csquery不再维护。您是否处理新行、换行符和制表符作为分隔类名的空格的情况?刚刚添加了一个测试,它已经正确地将类中的任何空格解释为分隔符。所以答案是肯定的。谢谢你提供的信息。不幸的是,这个问题是NC,但我已经多次遇到这个特定问题。顺便问一下,你为什么要关闭所有关于c是否有jquery端口的老问题,因为我已经回答了,将近三年后,现在有了jquery端口?不管你是否同意这个问题是一个好问题,它已经存在多年了,并且在谷歌搜索这个问题时出现得很高。我希望人们能够找到这个。现在结束这一切似乎有点报复性。唯一的结果是,这个项目是免费的,有用的,并且是麻省理工学院授权的,直到最近才以完整的形式存在,它的曝光率将会降低。好吧,我想这是你的决定,我认为你利用法律条文阻碍我让人们知道这个项目的努力太糟糕了。我在不到一天前回答了这个问题,现在已经 已经有两次投票了,所以我想人们会发现它很有用,即使你不是。太糟糕了,明天就这么过去了。