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

Dav*_*ave 64 css c# jquery css-selectors jquery-selectors

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

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

Jam*_*rgy 79

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);
Run Code Online (Sandbox Code Playgroud)

从Web同步加载

CQ dom = CQ.CreateFromUrl("http://www.jquery.com");
Run Code Online (Sandbox Code Playgroud)

异步加载(非阻塞)

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

运行选择器和做jQuery的东西

var childSpans = dom["div > span"];
childSpans.AddClass("myclass");
Run Code Online (Sandbox Code Playgroud)

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

输出:

string html = dom.Render();
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,是否有一些理由为什么你要关闭所有问题"是否有c#的jquery端口",因为我已经回答了它,差不多三年后,现在已经有了?无论你是否同意这个问题对于SO来说是一个好问题,它已经存在多年了,并且在谷歌搜索问题中看起来很高.我希望人们能够找到这个.现在关闭它似乎有点报复.唯一的结果是,这个免费,有用且获得MIT许可的项目,直到最近才以完整的形式存在,其曝光率较低. (3认同)

And*_*y S 70

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

FizzlerSharp-Query提供类似的功能,但项目似乎被放弃了.

  • 请考虑upvoting @ jamietre的答案而不是我的答案.他有一个很棒的解决方案! (5认同)