有没有类似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