首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML选择器库

HTML选择器库
EN

Stack Overflow用户
提问于 2012-05-05 21:44:34
回答 2查看 3.8K关注 0票数 2

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

假设我只想枚举一个选定的‘div’中的所有‘href’和‘src’,其id类似于"post_message_%“。或者,假设我想在一个具有特定id或输入类型(如隐藏或单选)的表单中选择名称和值字符串。

我可以先编写code..but,寻找任何现有的解决方案,这样我就可以使用它,节省时间做其他事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-05 21:46:44

你应该看看Html Agility包,可用的here。下面是来自他们网站的一个使用XPATH选择器的用例:

代码语言:javascript
复制
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
   HtmlAttribute att = link["href"];
   att.Value = FixLink(att);
}
doc.Save("file.htm");
票数 5
EN

Stack Overflow用户

发布于 2012-09-14 04:33:23

这个游戏有点晚了,但这里有另一个选择。CsQuery是.NET4中jQuery的一个完整移植。在NuGet上的名字是CsQuery。它稳定且功能齐全,包括所有CSS3选择器和DOM操作方法。它也是完全索引的,使得选择器比HTML Agility Pack快几个数量级。

语法如下所示(复制上面的例子)

代码语言:javascript
复制
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方法,所以您可以这样做:

代码语言:javascript
复制
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)。由于$语法的价值在于其简洁性,并且无法在C#中创建默认的静态方法,因此提供了Cq() on elements方法作为在CQ对象中包装元素的简写。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10462445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档