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

时间:2009-10-16 21:51:58

标签: c# jquery css jquery-selectors css-selectors

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

目前,我正在使用正则表达式解析一些html字符串,并认为在jQuery中使用css选择器以匹配我想要的元素会更好。

5 个答案:

答案 0 :(得分:78)

2012年10月18日更新

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

原始答案

老问题但新答案。我最近发布了CsQuery的1.1版,这是一个用C#编写的.NET 4的jQuery端口,我已经工作了大约一年。也在NuGet上作为“CsQuery”

当前版本实现了所有CSS2& CSS3选择器,所有jQuery扩展和所有jQuery DOM操作方法。它有广泛的测试覆盖率,包括来自jQuery和sizzle的所有测试(jQuery CSS选择引擎)。我还包括一些与Fizzler直接比较的性能测试;在大多数情况下,CsQuery显着优于它。实际上,例外情况是在Fizzler更快的地方加载HTML;我认为这是因为fizzler没有建立索引。不过,在第一次选择之后,你会得到那段时间。

有关于github网站的文档,但在基本级别它的工作方式如下:

从HTML

字符串创建
CQ dom = CQ.Create(htmlString);

从网络同步加载

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();

答案 1 :(得分:69)

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

FizzlerSharp-Query提供类似功能,但项目似乎已被放弃。

答案 2 :(得分:2)

对于XML,您可以使用XPath ...

答案 3 :(得分:1)

我不清楚你要实现的目标,但是如果你有一个HTML文档,你试图从中提取数据,我建议加载parser,然后,查询对象以获取所需元素变得相当简单。

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

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

答案 4 :(得分:1)

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