.NET 帮助

Html Agility Pack C#(它如何为开发人员工作)

发布 2024年六月4日
分享:

介绍

在 C# 开发领域,动态管理和操作文档内容的需求非常普遍。 开发人员通常依赖强大的库来自动执行创建 PDF 报告和从网页中提取数据等活动。 本文探讨了 IronPDF 和 HTML Agility Pack 在 C# 中的直接集成,并提供了代码示例来演示如何使用这些库毫不费力地创建 PDF 文档和读取 HTML 文本。

另一方面,IronPDF 是一个功能丰富的 .NET 库,用于处理 PDF 文件。 由于 IronPDF 允许开发人员从 HTML 内容、URL 或原始数据动态生成 PDF 文件,因此它是文档创建、报告和数据可视化的重要工具。

为了简化 .NET 应用程序中的文档生成,我们将在本篇文章中探讨如何将 IronPDF 与 HTML Agility Pack 连接起来。结合这些技术,程序员可以与远程系统协同工作,生成动态 PDF 页面,并通过网络连接获取数据,同时提高程序的生产力和可扩展性。

如何在 C# 中使用 HtmlAgilityPack

  1. 创建一个新的 C# 项目。

  2. 安装 HtmlAgilityPack 库。

  3. 导入命名空间。 创建对象。

  4. 从 Url 导入数据并解析 HTML。

  5. 获取所需数据并处理对象。

HtmlAgilityPack 简介

HTML 敏捷包HTML Parsing Library 是一个面向 .NET 开发人员的多功能、功能强大的 HTML 解析库。 在其广泛的 API 集合的帮助下,开发人员可以轻松地浏览、更改和提取 HTML 文档中的数据。 HTML Agility Pack 使所有开发人员(无论经验水平如何)都能更轻松地编程处理 HTML 内容。

HTML Agility Pack 的独特之处在于它能温和地处理组织不良或错误的 HTML。 它非常适合 HTML 标记质量可能参差不齐的在线搜刮操作,因为它使用了一种宽容的解析算法,甚至可以解析构造最糟糕的 HTML。

HtmlAgilityPack 的功能

HTML 解析

借助 HTML Agility Pack 提供的强大 HTML 解析功能,开发人员可以从文件、URL 和字符串等各种来源加载 HTML 文档。 由于采用了宽松的解析方法,它可以从容应对格式不佳或不正确的 HTML,因此适用于 HTML 标记质量参差不齐的网络搜刮活动。

DOM 操作

用于探索、浏览和使用 HTML 文档对象模型(DOM)在结构上,HAP 提供了用户友好的 API。 HTML 元素、属性和文本节点都可以由开发人员以编程方式添加、删除或修改,从而实现动态 HTML 内容操作。

XPath 和 LINQ 支持

为选择和查询 HTML 组件,HTML Agility Pack 支持 LINQ(语言综合查询)以及 XPath 语法搜索。 要在 HTML 文档中根据属性、标记或层次结构选择项目,XPath 表达式查询提供了一种强大且易于理解的语法。 对于习惯在 C# 中使用 LINQ 的开发人员来说,LINQ 查询提供了一种熟悉的查询语法,便于与其他 .NET 组件顺利集成。

HtmlAgilityPack 入门

在 C# 项目中设置 HtmlAgilityPack

HtmlAgility 基类库以单个捆绑包的形式出现,安装后应可在 NuGet 中获得,并可在 C# 项目中使用。 它提供 HTML 解析器和来自 HTML 文档和 HTML URL 的 CSS 选择器。

在 Windows 控制台和窗体中实施 HtmlAgilityPack

许多 C# 应用程序类型,如 Windows 窗体(WinForms)在 HtmlAgilityPack 和 Windows 控制台中实施 HtmlAgilityPack。 虽然不同框架的实现方式各不相同,但基本思想是不变的。

Html Agility Pack C#(开发人员如何使用):图 1 - 使用 NuGet 软件包管理器搜索 HtmlAgilityPack 并安装

HtmlAgilityPack C# 示例

C# 开发人员工具箱中用于导航、处理和处理 HTML 文档的最重要工具之一是 HTML Agility Pack(HAP). 通过其用户友好的 API,从 HTML 页面提取数据变得更加容易,该 API 就像一棵有序的元素树。 让我们通过一个简单的代码示例来演示如何使用它。

using HtmlAgilityPack;

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
var doc = web.Load("https://ironpdf.com/");

// Select specific html nodes and parse html string
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    Console.WriteLine(node.InnerText);
}
Console.ReadKey();
using HtmlAgilityPack;

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
var doc = web.Load("https://ironpdf.com/");

// Select specific html nodes and parse html string
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    Console.WriteLine(node.InnerText);
}
Console.ReadKey();
Imports HtmlAgilityPack

' Load HTML content from a file or URL
Private web As New HtmlWeb()
Private doc = web.Load("https://ironpdf.com/")

' Select specific html nodes and parse html string
Private nodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']")

' Iterate through selected nodes and extract content
For Each node As HtmlNode In nodes
	Console.WriteLine(node.InnerText)
Next node
Console.ReadKey()
VB   C#

在本示例中,我们使用 HTML Agility Pack 从 URL 加载 HTML 节点材料。 然后将 HTML 加载到 var doc 中进行解析和操作。 要提取内容,程序首先要识别 HTML 文档的根节点,然后使用 XPath 查询具体锁定文档中的节点。 从上面的代码中,我们特别从 HTML 字符串数据中选择了类为 product-homepage-header 的 div 元素,然后将每个选定节点的内部文本打印到控制台。

Html Agility Pack C#(如何为开发人员工作):图 2 - 通过检索产品-主页-页眉类的内部文本提取的文本

HtmlAgilityPack 操作

HTML 转换

开发人员可以使用 HTML Agility Pack 对 HTML 文本进行多种转换和处理。 除了重新组织 HTML 文档的 DOM 层次结构外,还包括添加、删除或更改文本节点、元素和属性等操作。

可扩展性

由于 HAP 具有可扩展性,程序员可以添加新的功能和行为来增加其功能。 使用提供的 API,开发人员可以设计自己的 HTML 解析器、过滤器或操纵器,根据自己的独特需求和用例定制 HAP。

性能和效率

HTML Agility Pack 的算法和数据结构可以很好地处理大篇幅的 HTML 文本,并对速度和效果进行了调整。 通过降低内存使用率和处理开销,确保快速、灵敏地解析和处理 HTML 内容。

将 HtmlAgilityPack 与 IronPdf 集成

将 IronPdf 与 HtmlAgilityPack 结合使用

当使用 HTML Agility Pack 和 Node.js 时,文档管理和报告创建将有无限可能。用于 PDF 转换的 IronPDF结合起来。 通过使用 HTML Agility Pack 进行 HTML 解析和IronPDF文档通过 PDF 转换,开发人员可以毫不费力地从动态在线材料中自动创建 PDF 文档。

安装 IronPDF

  • 启动 Visual Studio 项目。
  • 选择 "工具">"NuGet 包管理器">"包管理器控制台"。
  • 在软件包管理器控制台中输入此命令:
Install-Package IronPdf
  • 作为替代方案,您可以使用 NuGet Package Manager for Solutions 安装 IronPDF。
  • 可以浏览 IronPdf 软件包的搜索结果,并进行选择,然后点击 "安装 "按钮。 Visual Studio 将为您负责安装和下载。

    Html 敏捷包 C#(如何为开发人员服务):图 3 - 在 NuGet Package Manager 的搜索栏中搜索 IronPdf,使用 Manage NuGet Package for Solution 安装 IronPDF,然后选择项目并点击安装按钮。

  • IronPdf 软件包和项目所需的任何依赖项将由 NuGet 安装。
  • IronPdf 安装后可用于您的项目。

通过 NuGet 网站安装

要了解有关 IronPDF 的功能、兼容性和其他下载选择的更多信息,请参阅其IronPDF NuGet 软件包信息在 NuGet 网站上。

利用 DLL 进行安装

作为替代方案,您可以使用 IronPdf 的 DLL 文件将其直接集成到您的项目中。 点击此处IronPDF DLL 下载获取包含 DLL 的 ZIP 文件。 解压缩后,将 DLL 整合到您的项目中。

实现逻辑

通过整合两个库的功能,HTML Agility Pack(HAP)和 IronPDF 可以用 C# 实现,以读取 HTML 信息并即时生成 PDF 文档。 下面列出了实施步骤,以及每个步骤的示例代码:

  1. 使用 HTML Agility Pack 加载 HTML 内容:要从文件、字符串或 URL 等源载入 HTML 资料,请使用 HTML Agility Pack。 在这一阶段,将对 HTML 文档进行解析,并创建一个可操作的 HTML 文档对象。

  2. 提取所需内容: 要从 HTML 文档中选择并提取特定内容,可将 HTML Agility Pack 与 XPath 或 LINQ 查询结合使用。 这可能需要根据元素的属性、标签或层次结构来选择元素。

  3. 使用 IronPDF 将 HTML 转换为 PDF:要根据检索到的 HTML 内容创建 PDF 文档,请使用 IronPDF。 IronPdf 可将 HTML 资料轻松转换为 PDF 格式,同时保持风格和布局。

  4. 可选:自定义 PDF 输出: 使用 IronPDF 添加页眉、页脚、页码和其他动态组件,根据需要自定义 PDF 输出。 这一步骤可以改善 PDF 文档的外观和可用性。

  5. 保存或串流 PDF 文档:创建的 PDF 文档可以直接流式传输到客户端或浏览器供下载,也可以保存到文件中。IronPdf 提供了将 PDF 文件保存到不同输出流的方法。
using HtmlAgilityPack;        
StringBuilder htmlContent = new StringBuilder();

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://ironpdf.com/");
// Select specific elements using XPath or LINQ
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    htmlContent.Append(node.OuterHtml);
    Console.WriteLine(node.InnerText);
}
// Convert HTML content to PDF using IronPDF
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());
// Save PDF to file
PDF.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();
using HtmlAgilityPack;        
StringBuilder htmlContent = new StringBuilder();

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://ironpdf.com/");
// Select specific elements using XPath or LINQ
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    htmlContent.Append(node.OuterHtml);
    Console.WriteLine(node.InnerText);
}
// Convert HTML content to PDF using IronPDF
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());
// Save PDF to file
PDF.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();
Imports HtmlAgilityPack
Private htmlContent As New StringBuilder()

' Load HTML content from a file or URL
Private web As New HtmlWeb()
Private doc As HtmlDocument = web.Load("https://ironpdf.com/")
' Select specific elements using XPath or LINQ
Private nodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']")

' Iterate through selected nodes and extract content
For Each node As HtmlNode In nodes
	htmlContent.Append(node.OuterHtml)
	Console.WriteLine(node.InnerText)
Next node
' Convert HTML content to PDF using IronPDF
Dim Renderer = New IronPdf.HtmlToPdf()
Dim PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString())
' Save PDF to file
PDF.SaveAs("output.pdf")
Console.WriteLine("PDF generated successfully!")
Console.ReadKey()
VB   C#

参观利用 IronPDF 进行转换了解有关代码示例的更多信息。

Html 敏捷包 C#(如何为开发人员服务):图 4 - IronPDF 主页

执行输出如下所示:

上述代码的输出示例

结论

无论是解析 HTML 数据还是创建 PDF 报告,由于 HTML Agility Pack 和 IronPDF in C# 的平滑集成,开发人员都可以轻松管理和更改文档材料。 通过将 IronPDF 的 PDF 制作功能与 HTML Agility Pack 的解析功能相结合,开发人员可以轻松、精确地自动执行与文档相关的操作。 这两个库的结合提供了一个强大的 C# 文档管理解决方案,无论您是要构建动态报表还是从网页中提取数据。

一个永久许可证、一年的软件维护和一个库升级都包含在 $749 Lite 捆绑包中。 IronPdf 提供免费许可,但有时间和再分发限制。 在试用期内,用户可以在看不到水印的情况下对解决方案进行评估。 请访问 IronPDF 的许可信息了解有关成本和许可证的更多信息。 要了解有关 Iron Software 库的更多信息,请访问他们的产品信息页面.

< 前一页
docfx C#(开发人员工作原理)
下一步 >
C# Continue(开发人员如何使用)

准备开始了吗? 版本: 2024.11 刚刚发布

免费NuGet下载 总下载量: 11,436,010 查看许可证 >