По-перше, встановіть пакет нуметів HTMLAgilityPack у свій проект.
Тоді, як приклад:
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-об'єктів. (дякую Метью)
HtmlDocument
і HtmlNode
це класи, якими ви користуєтесь найбільше. Подібно до XML-аналізатора, він забезпечує методи selectSingleNode та selectNodes, які приймають вирази XPath.
Зверніть увагу на HtmlDocument.Option??????
булеві властивості. Вони контролюють, як Load
і LoadXML
методи оброблять ваш HTML / XHTML.
Існує також складений довідковий файл під назвою HtmlAgilityPack.chm, який має повне посилання на кожен з об'єктів. Зазвичай це знаходиться в базовій папці рішення.