如何使用HTML Agility包

c# html html-agility-pack

我如何使用HTML Agility Pack

我的XHTML文檔並不完全有效。這就是我想用它的原因。我如何在我的項目中使用它?我的項目是在C#中。

熱門答案

首先,將HTMLAgilityPack nuget包安裝到項目中。

然後,作為一個例子:

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

// There are various options, set as needed
htmlDoc.OptionFixNestedTags=true;

// filePath is a path to a file containing the html
htmlDoc.Load(filePath);

// Use:  htmlDoc.LoadHtml(xmlString);  to load from a string (was htmlDoc.LoadXML(xmlString)

// ParseErrors is an ArrayList containing any errors from the Load statement
if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
{
    // Handle any parse errors as required

}
else
{

    if (htmlDoc.DocumentNode != null)
    {
        HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body");

        if (bodyNode != null)
        {
            // Do something with bodyNode
        }
    }
}

(注意:此代碼僅為示例,不一定是最好/唯一的方法。不要在您自己的應用程序中盲目使用它。)

HtmlDocument.Load()方法還接受一個流,該流在與.NET框架中的其他面向流的類集成時非常有用。而HtmlEntity.DeEntitize()是另一種正確處理html實體的有用方法。 (謝謝​​馬修)

HtmlDocumentHtmlNode是您最常使用的類。與XML解析器類似,它提供了接受XPath表達式的selectSingleNode和selectNodes方法。

注意HtmlDocument.Option??????布爾屬性。它們控制LoadLoadXML方法處理HTML / XHTML的方式。

還有一個名為HtmlAgilityPack.chm的編譯幫助文件,其中包含每個對象的完整參考。這通常位於解決方案的基本文件夾中。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因