您应该在此处查看Html Agility包。这是他们网站上的一个使用XPATH选择器的用例:
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");
Run Code Online (Sandbox Code Playgroud)
游戏有点晚了,但这是另一种选择。CsQuery是.NET4中jQuery的完整端口。在NuGet as上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);
}
Run Code Online (Sandbox Code Playgroud)
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"))
});
Run Code Online (Sandbox Code Playgroud)
语法e.Cq()是将元素包装在jQuery对象中的C#版本,例如var el = $(e)。由于$语法的价值在于其简洁性,并且无法在C#中创建默认的静态方法,Cq()因此提供了元素上的方法作为将元素包装在CQ对象中的简写。
| 归档时间: |
|
| 查看次数: |
3537 次 |
| 最近记录: |