跳至頁尾內容
開發者更新

Html Agility Pack C#(對於開發者的運行原理)

動態管理和處理文件內容在C#開發世界中是普遍存在的需求。 開發者通常依賴強大的程式庫來自動執行活動,例如建立PDF報告和從網頁提取資料。 本文探討了在C#中簡單整合IronPDF和HTML Agility Pack的方式,並提供程式碼範例以展示如何使用這些程式庫輕鬆建立PDF文件和讀取HTML文字。

IronPDF是用於處理PDF文件的功能豐富的.NET程式庫。 由於IronPDF允許開發者從HTML內容、網址或原始資料動態生成PDF文件,它成為文件建立、報告和資料可視化的有價值工具。

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

How to Use HtmlAgilityPack in C

  1. 建立一個新的C#專案。
  2. 安裝HtmlAgilityPack程式庫。
  3. 導入命名空間。 建立一個物件。
  4. 從URL中導入資料並解析HTML。
  5. 獲取所需的資料並銷毀物件。

HtmlAgilityPack介紹

HTML Agility Pack是針對.NET開發者的多功能且強大的HTML解析程式庫。 在其廣泛的API集合幫助下,開發者可以輕鬆地導航、修改和從HTML文件中提取資料。 無論經驗水平如何,HTML Agility Pack都能夠讓所有開發者以程式化方式更輕鬆地處理HTML內容。

HTML Agility Pack獨特之處在於其能夠巧妙地處理結構不佳或有缺陷的HTML。 由於其使用了一種寬容的解析算法,即使是構建最不良的HTML它也能解析,這使得它非常適合用於HTML標記質量可能有所不同的網路爬取操作。

HtmlAgilityPack的功能特點

HTML解析

通過HTML Agility Pack提供的強大HTML解析功能,開發者可以從多種來源載入HTML文件,包括文件、URL和字串。 由於其寬容的解析方式,它能夠優雅地處理格式不佳或錯誤的HTML,使其適合HTML標記質量變異的網路爬取活動。

DOM操作

為了探索、瀏覽和處理HTML文件物件模型(DOM)結構,HAP提供了一個易於使用的API。 開發者可以程式上地新增、刪除或修改HTML元素、屬性和文字節點,允許動態的HTML內容操作。

XPath和LINQ支持

為選擇和查詢HTML成分,HTML Agility Pack支持LINQ(語言整合查詢)以及XPath語法搜索。 XPath表達式查詢提供了一種強大且易於理解的語法,用於根據HTML文件中的屬性、標籤或層次結構選擇項目。 對於習慣於在C#中使用LINQ工作的人,LINQ查詢提供了熟悉的查詢語法,方便與其他.NET組件的平滑整合。

開始使用HtmlAgilityPack

設置HtmlAgilityPack在C#專案中

HtmlAgility基礎類庫包裝於單一的包裡,它可以通過安裝NuGet來在C#專案中使用。 它提供了HTML解析器和從HTML文件以及HTML URL中選擇CSS選擇器。

實現HtmlAgilityPack於Windows控制台和表單

許多C#應用程式型別,如Windows Forms(WinForms)和Windows控制台,實現了HtmlAgilityPack。 雖然實現因框架而異,但基本理念保持不變。

圖片描繪:Html Agility Pack C#(開發者如何使用):圖1 - 使用NuGet套件管理器搜索並安裝HtmlAgilityPack

HtmlAgilityPack的C#範例

HTML Agility Pack(HAP)是C#開發者工具箱中,專門用於導航、處理和操作HTML文件最重要的工具之一。 通過其易於使用的API,能夠像元素的有序樹一樣,簡化HTML頁面的資料提取。 讓我們來看一個簡單的程式碼範例,展示如何使用它。

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()
$vbLabelText   $csharpLabel

在本例中,我們使用HTML Agility Pack載入一個網址的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旨在擴展,程式設計師可新增新功能和行為來增加其對HAP的功能。 通過提供的API,開發者可以設計自己的HTML解析器、過濾器或操作工具,以自訂HAP來滿足自己的獨特需求和用例。

性能與效率

大型HTML文字能夠被HTML Agility Pack的算法和資料結構有效處理,這些算法和資料結構被優化以提高速度和效率。 它通過減少記憶體使用和處理開銷來確保快速且響應迅速的HTML內容解析和操作。

整合HtmlAgilityPack與IronPDF

使用IronPDF與HtmlAgilityPack

當HTML Agility Pack與IronPDF進行PDF轉換結合後,文件管理和報告建立的可能性是無窮無盡的。 通過將HTML Agility Pack用於HTML解析,並使用IronPDF文件轉換,開發者可以輕鬆實現從動態在線材料中自動生成PDF文件。

安裝IronPDF

  • 啟動Visual Studio專案。
  • 選擇"工具">"NuGet套件管理器">"套件管理控制台"。
  • 在套件管理控制台中輸入此命令:
Install-Package IronPdf
  • 作為替代,您可以使用解決方案的NuGet套件管理器安裝IronPDF。
  • 可以瀏覽IronPDF套件的搜索結果,選擇所需,然後按下"安裝"按鈕。 Visual Studio將為您下載和安裝。

    Html Agility Pack C# (How It Works For Developers): Figure 3 - Install IronPDF using the Manage NuGet Package for Solution by searching IronPDF in the search bar of NuGet Package Manager, then select the project and click on the Install button.

  • NuGet將為您的專案安裝IronPDF套件和任何所需的依賴項。
  • 安裝後IronPDF即可用於您的專案。

通過NuGet網站安裝

請存取NuGet網站上的IronPDF NuGet套件資訊,了解IronPDF的特點、相容性和其他下載選擇。

使用DLL安裝

作為替代,您可以使用IronPDF的DLL文件將其直接整合到您的專案中。 點擊此IronPDF DLL下載獲取包含DLL的ZIP文件。 解壓後,將DLL納入您的專案。

實施邏輯

通過整合這兩個程式庫的功能,HTML Agility Pack(HAP)和IronPDF可以在C#中實現,從而即時讀取HTML資訊和生成PDF文件。 以下列出具體步驟的實現以及一個作為演示的範例程式碼:

  1. 使用HTML Agility Pack載入HTML內容:使用HTML Agility Pack從某一來源載入HTML材料,如文件、字串或URL。 在此階段,HTML文件被解析並建立一個可操作的HTML文件物件。
  2. 擷取所需內容:使用HTML Agility Pack結合XPath或LINQ查詢,以選擇和提取HTML文件中特定內容。 這可能涉及根據其屬性、標籤或層次結構選擇元素。
  3. 使用IronPDF將HTML轉換為PDF:使用IronPDF從檢索的HTML內容生成PDF文件。 IronPDF能夠輕松地將HTML材料轉換為維持風格和佈局的PDF格式。
  4. 選擇性:自訂PDF輸出:使用IronPDF新增標題、頁腳、頁碼和其他動態元件以按需自訂PDF輸出。 此步驟改善了生成的PDF文件的外觀和可用性。
  5. 保存或流式傳輸PDF文件:生成的PDF文件可以直接流式傳輸到客戶端或瀏覽器以供下載,或者保存至文件。IronPDF 提供多種方法將PDF文件保存到不同的輸出流。
using HtmlAgilityPack;
using IronPdf;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        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 HtmlToPdf();
        var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());

        // Save PDF to file
        PDF.SaveAs("output.pdf");
        Console.WriteLine("PDF generated successfully!");
        Console.ReadKey();
    }
}
using HtmlAgilityPack;
using IronPdf;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        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 HtmlToPdf();
        var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());

        // Save PDF to file
        PDF.SaveAs("output.pdf");
        Console.WriteLine("PDF generated successfully!");
        Console.ReadKey();
    }
}
Imports HtmlAgilityPack
Imports IronPdf
Imports System
Imports System.Text

Friend Class Program
	Shared Sub Main()
		Dim htmlContent As New StringBuilder()

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

		' Select specific elements using XPath or LINQ
		Dim 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 HtmlToPdf()
		Dim PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString())

		' Save PDF to file
		PDF.SaveAs("output.pdf")
		Console.WriteLine("PDF generated successfully!")
		Console.ReadKey()
	End Sub
End Class
$vbLabelText   $csharpLabel

請存取使用IronPDF進行轉換以了解此程式碼範例的更多資訊。

圖片描繪:Html Agility Pack C#(開發者如何使用):圖4 - IronPDF首頁

執行結果如下所示:

圖片描繪:以上程式碼的範例輸出

結論

無論是解析HTML資料還是建立PDF報告,在C#中HTML Agility Pack和IronPDF的順暢整合使得開發者能夠輕鬆地管理和更改文件材料。 通過結合IronPDF的PDF生成功能與HTML Agility Pack的解析能力,開發者能夠輕鬆且精確地自動化文件相關的操作。 這兩個程式庫的結合提供了一個強大的C#文件管理解決方案,無論您是在構建動態報告還是從網頁中提取資料。

永久授權、一年的軟體維護以及程式庫升級都包含在$999 Lite捆綁中。 IronPDF提供具有時間和再分發限制的免費授權。 在試用期內,使用者可以不带水印地評估解決方案。 請前往IronPDF的授權資訊了解費用和授權的更多資訊。

了解有關Iron Software libraries的更多資訊。

常見問題

如何在C#中將HTML轉換為PDF?

您可以使用IronPDF的RenderHtmlAsPdf方法將HTML字串轉換為PDF。您還可以使用RenderHtmlFileAsPdf將HTML檔案轉換為PDF。

在C#專案中使用HtmlAgilityPack的目的何在?

HtmlAgilityPack用於C#專案中解析和操作HTML文件。它可以處理格式不佳的HTML,非常適合網頁爬蟲和資料擷取工作。

如何在C#應用程式中設置HtmlAgilityPack?

要設置HtmlAgilityPack,請在Visual Studio中透過NuGet套件管理器安裝。安裝後,您可以匯入必要的命名空間並開始在您的應用程式中解析HTML內容。

IronPDF和HtmlAgilityPack可以一起用於文件建立嗎?

可以,IronPDF和HtmlAgilityPack可以結合使用,從HTML內容建立動態PDF文件。HtmlAgilityPack提取並操縱HTML資料,然後可使用IronPDF將其轉換為PDF。

.NET開發者的IronPDF的主要功能有哪些?

IronPDF提供的功能包括將HTML轉換為PDF,合併PDF,向PDF新增文字或圖片。它支援廣泛的功能以實現.NET應用程式中的強大PDF文件管理。

HtmlAgilityPack如何幫助從網頁擷取資料?

HtmlAgilityPack允許開發者載入HTML文件並使用XPath或LINQ查詢來導航和根據特定的節點或屬性提取資料,簡化網路資料擷取。

和HtmlAgilityPack整合PDF庫有哪些好處?

將IronPDF整合HtmlAgilityPack可以通過將動態HTML內容轉換為PDF報告來增強文件自動化,簡化.NET應用程式中的文件生成。

可以在控制台應用程式中使用IronPDF嗎?

可以,IronPDF可以在各種型別的C#應用程式中實施,包括Windows控制台應用程式,允許進行多功能文件處理和PDF生成。

使用HtmlAgilityPack可以執行哪些型別的HTML操作?

HtmlAgilityPack支持新增、刪除或修改HTML節點和元素,以及重新組織DOM結構,使其成為HTML文件操作的多功能工具。

IronPDF是否為開發者提供免費試用?

IronPDF提供具有一定限制的免費授權,允許開發者在試用期內不帶浮水印進行評估,提供在購買前測試其功能的機會。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話