查看我的 CsQuery 项目:https ://github.com/jamietre/csquery或在 nuget 上作为“CsQuery”。
这是 jQuery 的 C# (.NET 4) 端口。选择器比 HTML Agility Pack 快几个数量级;事实上,我写它的最初目的就是做你想做的事:实时操作 HTML。碰巧的是,来自 ckeditor 生成的带有 html 的 CMS。
要使用 CsQuery 拦截 Web 表单中的 HTML,您可以在页面代码隐藏中执行以下操作:
using CsQuery;
using CsQuery.Web;
protected override void Render(HtmlTextWriter writer)
{
// the CsQueryHttpContext object is part of the CsQuery library, it's a helper
// than abstracts the process of intercepting base.Render() for you.
CsQueryHttpContext csqContext =
WebForms.CreateFromRender(Page, base.Render, writer);
// CQ object is like a jQuery object. The "Dom" property of the context
// returned above represents the output of this page.
CQ doc = csqContext.Dom;
doc["li > a"].AddClass("foo");
// write it
csqContext.Render();
}
GitHub 上有基本文档,但除了输入和输出 HTML 之外,它的工作方式与 jQuery 非常相似。上面的WebForms
对象只是为了帮助您处理与HtmlTextWriter
对象和Render
方法的交互。通用用法很简单:
var doc = CQ.Create(htmlString);
// or
var doc = CQ.CreateFromUrl(url);
.. do stuff with doc, a CQ object that acts like a jQuery object
string html = doc.Render();