在 .NET 生态系统中,虽然没有官方的 "LINQ to HTML" 实现,但有多个优秀的 HTML 操作库可供选择。以下是主要的解决方案:
基础概念: HtmlAgilityPack 是一个流行的 .NET HTML 解析器,它允许你以类似 LINQ 的方式查询和操作 HTML 文档。
优势:
应用场景:
示例代码:
var html = @"<html><body><div id='content'><p>Hello World</p></div></body></html>";
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
// 使用 XPath 查询
var div = doc.DocumentNode.SelectSingleNode("//div[@id='content']");
Console.WriteLine(div.InnerHtml); // 输出: <p>Hello World</p>
// 类似 LINQ 的操作
var paragraphs = doc.DocumentNode.Descendants("p")
.Where(p => p.InnerText.Contains("Hello"));
基础概念: AngleSharp 是一个现代的 .NET HTML、CSS 和 SVG 解析器,实现了 W3C 标准。
优势:
应用场景:
示例代码:
var config = AngleSharp.Configuration.Default;
var context = AngleSharp.BrowsingContext.New(config);
var document = await context.OpenAsync(req => req.Content("<div><p>Hello AngleSharp</p></div>"));
// 使用 CSS 选择器
var p = document.QuerySelector("div > p");
Console.WriteLine(p.TextContent); // 输出: Hello AngleSharp
// 类似 LINQ 的操作
var elements = document.All
.Where(e => e.TextContent.Contains("AngleSharp"));
基础概念: CsQuery 提供了类似 jQuery 的 API 来操作 HTML。
优势:
应用场景:
如果处理的是格式良好的 XHTML,可以直接使用 .NET 内置的 LINQ to XML:
var xhtml = XDocument.Parse(@"<html xmlns='http://www.w3.org/1999/xhtml'><body><div id='content'><p>Hello</p></div></body></html>");
var content = xhtml.Descendants(XName.Get("div", "http://www.w3.org/1999/xhtml"))
.FirstOrDefault(d => d.Attribute("id")?.Value == "content");
这些库都能以类似 LINQ 的方式查询和操作 HTML,虽然不是官方的 "LINQ to HTML",但提供了相似的功能和体验。
没有搜到相关的文章