有没有类似jQuery的CSS / HTMLselect器可以在C#中使用?

我想知道是否有一个类似jQuery的cssselect器可以在C#中使用。

目前,我正在使用正则expression式parsing一些htmlstring,并认为有像jQuery中的CSSselect符匹配我所需的元素会更好。

你一定可以看到@ jamietre的CsQuery 。 看看他对这个问题的回答!

Fizzler和Sharp-Query提供了类似的function,但是这些项目似乎被放弃了。

2012年10月18日更新

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

原始答复

老问题,但新的答案。 我最近发布了1.1版本的CsQuery,一个用C#编写的用于.NET 4的jQuery端口,我已经使用了大约一年的时间。 在NuGet上也以“CsQuery”

当前版本实现了所有的CSS2和CSS3select器,所有的jQuery扩展,以及所有的jQuery DOM操作方法。 它有广泛的testing覆盖,包括jQuery和sizzle(jQuery CSSselect引擎)的所有testing。 我还包括一些性能testing,以便与Fizzler进行直接比较; 在大部分情况下,CsQuery的性能明显优于它。 这个例外实际上是在Fizzler更快的时候加载HTML。 我认为这是因为fizzler不build立索引。 不过,你可以在第一次select之后重新找回时间。

有github网站上的文档,但在基本级别,它的工作原理是这样的:

从一个HTMLstring创build

CQ dom = CQ.Create(htmlString); 

从网页同步加载

 CQ dom = CQ.CreateFromUrl("http://www.jquery.com"); 

asynchronous加载(非阻塞)

 CQ.CreateFromUrlAsync("http://www.jquery.com", responseSuccess => { Dom = response.Dom; }, responseFail => { .. }); 

运行select器和做jQuery的东西

 var childSpans = dom["div > span"]; childSpans.AddClass("myclass"); 

CQ对象就像jQuery对象一样。 上面使用的属性索引器是默认方法(如$(...)

输出:

 string html = dom.Render(); 

对于XML,您可能会使用XPath …

我并不完全清楚你想要达到什么目的,但是如果你有一个HTML文档,你试图从中提取数据,我build议用一个parsing器加载它,然后它变得相当微不足道查询对象来拉取所需的元素。

我上面链接的parsing器允许使用XPath查询,这听起来就像你在找什么。

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

不太像jQuery,但这可能有所帮助: http : //www.codeplex.com/htmlagilitypack