c# - HTML 选择器库

标签 c# jquery .net html jquery-selectors

Dot Net 世界中是否存在任何类似 jQuery 的 html 元素选择器库?我正在构建一个涉及大量 html 解析的应用程序。

假设我想枚举所有'href's 和'src's inside only a selected 'div's having its id like "post_message_%". 或者说想要在具有特定 ID 或输入类型(例如隐藏或单选)的表单中选择名称和值字符串

我可以编写代码..但首先要寻找任何现有的解决方案,以便我可以使用它并节省时间做其他事情。

最佳答案

比赛有点晚了,但这里有另一种选择。 CsQuery是 .NET4 中 jQuery 的完整端口。它在 NuGet 上作为 CsQuery。它稳定且功能完备,包括所有 CSS3 选择器和 DOM 操作方法。它还具有完全索引,使选择器比 HTML Agility Pack 快几个数量级。

语法看起来像这样(复制上面的例子)

CQ doc = CQ.CreateFromFile("file.htm");
foreach (IDomObject link in doc["a"]) {
    var attr = link["href"];
    link["href"] = FixLink(attr);
}

CQ 对象的属性索引器语法与运行选择器的默认 jQuery 方法相同,例如$('a')。在 DomObject(一个元素)上,它返回属性值。

除了 CSS 选择器之外,CsQuery 还实现了所有 jQuery 方法,因此您可以这样做:

doc.Each((i,e)=> {
    var el = CQ.Create(e);   // or shorthand: var el = e.Cq()
    el.Attr("href",FixLink(el.Attr("href"))
});

语法 e.Cq() 是将元素包装在 jQuery 对象中的 C# 版本,例如 var el = $(e)。由于 $ 语法的值(value)在于它的简洁性,并且无法在 C# 中创建默认的静态方法,因此提供了元素上的方法 Cq() 作为简写来将元素包装在 CQ 对象。

关于c# - HTML 选择器库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10462445/

相关文章:

c# - 使用现有API的.Net中事件的线程上下文是什么?

c# - WPF 将应用程序设计为可动态换肤

c# - NServiceBus异常处理和消息重试机制

javascript - 使用 href 传递请求参数,但它们在请求中不可见(使 href Post 而不是 Get)

javascript替换换行符和特殊字符

c# - 如何获取引用程序集的物理路径

c# - System.TimeoutException : A timeout occured after 30000ms selecting a server using CompositeServerSelector

c# - 创建新实例时使用类方法

javascript - string split and check if parts 以防止错误

javascript - 如何解决 "�"而不是 åäö 的问题?