.NET 幫助

Html Agility Pack C#(它對開發人員的工作方式)

發佈 2024年6月4日
分享:

介紹

在 C# 開發世界中,動態管理和操作文件內容的需求非常普遍。 開發人員通常依賴強大的庫來自動化活動,如創建 PDF 報告和從網頁中提取數據。 本文探討了在 C# 中簡單整合 IronPDF 和 HTML Agility Pack,並提供了代碼範例以展示如何輕鬆使用這些庫創建 PDF 文檔並讀取 HTML 文本。

另一方面,IronPDF 是一個功能豐富的 .NET 庫,用於處理 PDF 文件。 由於 IronPDF 允許開發人員從 HTML 內容、URL 或原始數據動態生成 PDF 文件,因此它在文檔創建、報告和數據可視化方面是一個有價值的工具。

為了簡化.NET應用中的文件生成,我們將在本文中探討如何將IronPDF與HTML Agility Pack結合。結合這些技術使得程式設計師能夠與遠端系統合作、生成動態PDF頁面,並通過網路連接獲取數據,同時提高其程序的生產力和可擴展性。

如何在C#中使用HtmlAgilityPack

  1. 創建一個新的 C# 專案。

  2. 安裝庫 HtmlAgilityPack。

  3. 匯入命名空間。 創建一個對象。

  4. 從網址匯入數據並解析 HTML。

  5. 獲取所需的數據並釋放該對象。

HtmlAgilityPack簡介

HTML Agility Pack是一個多功能且強大的 HTML 解析庫,適用於 .NET 開發人員。 借助其廣泛的 APIs 集合,開發人員可以輕鬆瀏覽、修改和提取來自 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 解析器和 CSS 選擇器。

在 Windows 主控台和表單中實現 HtmlAgilityPack

許多 C# 應用程式類型,如 Windows Forms(WinForms)和 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 - 從獲取 product-homepage-header 類的內部文本中提取的文本

HtmlAgilityPack 操作

HTML 轉換

開發人員可以使用 HTML Agility Pack 對 HTML 文字進行多種轉換和操作。 這涵蓋了操作,例如添加、刪除或更改文本節點、元素和屬性,此外還包括重新組織 HTML 文檔的 DOM 層次結構。

可擴展性

由於 HAP 是設計為可擴展的,程式設計師可以新增功能和行為來增加其功能性。 使用提供的 API,開發者可以設計自己的 HTML 解析器、篩選器或操控器,以根據他們的獨特需求和使用案例來自訂 HAP。

效能與效率

HTML Agility Pack 的演算法和資料結構能夠很好地處理大型 HTML 文本,並針對速度和效能進行了調整。 它通過減少記憶體使用和處理開銷來確保快速和高效的 HTML 內容解析與操作。

將HtmlAgilityPack與IronPDF集成

使用 IronPDF 搭配 HtmlAgilityPack

當 HTML Agility Pack 和IronPDF 的 PDF 轉換功能結合。 通過使用 HTML Agility Pack 進行 HTML 解析和IronPDF 文件檔案對於 PDF 轉換,開發人員可以輕鬆地自動化從動態線上資料創建 PDF 文件的過程。

安裝 IronPDF

  • 啟動 Visual Studio 專案。
  • 選擇「工具」>「NuGet 套件管理器」>「套件管理器主控台」。
  • 在套件管理器控制台中輸入此命令:
Install-Package IronPdf
  • 作為替代方案,您可以使用 NuGet 套件管理器來安裝 IronPDF。
  • 您可以瀏覽和選擇IronPDF套件的搜尋結果,然後點擊「安裝」按鈕。 Visual Studio 會為您處理安裝和下載。

    Html Agility Pack C#(對開發者的運作方式):圖 3 - 使用 NuGet 套件管理器中的“管理 NuGet 套件 for Solution”安裝 IronPDF,在 NuGet 套件管理器的搜索欄中搜索“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 Agility Pack C#(開發人員的工作方式):圖 4 - IronPDF 首頁

執行輸出如下所示:

上述程式碼的範例輸出

結論

無論是解析 HTML 數據還是創建 PDF 報告,開發人員都可以藉助 HTML Agility Pack 與 IronPDF 在 C# 中的無縫整合輕鬆管理和修改文件材料。 開發者可以通過結合IronPDF的PDF生成功能與HTML Agility Pack的解析能力,輕鬆且精確地自動化與文件相關的操作。 這兩個庫的結合提供了強大的 C# 文件管理解決方案,無論您是在構建動態報告還是從網頁提取數據。

$749 Lite 套裝包含永久授權、一年的軟體維護和庫升級。 IronPDF 提供具有時間限制和再分發限制的免費授權。 在試用期間,使用者可以評估該解決方案而不會看到浮水印。 請前往 IronPDF 的授權資訊了解更多關於費用和許可證的資訊。 要了解有關 Iron Software 程式庫的更多資訊,請造访他们的產品資訊頁面.

< 上一頁
docfx C#(它如何運作給開發者)
下一個 >
C#繼續(對開發人員的工作方式)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >