Сначала установите пакет 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
}
}
}
(NB. Этот код является только примером и не обязательно лучшим / единственным подходом. Не используйте его вслепую в своем приложении.)
Метод HtmlDocument.Load()
также принимает поток, который очень полезен для интеграции с другими потоково-ориентированными классами в .NET Framework. В то время как HtmlEntity.DeEntitize()
- еще один полезный метод для правильной обработки html-сущностей. (спасибо Мэтью)
HtmlDocument
и HtmlNode
- это классы, которые вы будете использовать чаще всего. Как и анализатор XML, он предоставляет методы selectSingleNode и selectNodes, которые принимают выражения XPath.
Обратите внимание на логические свойства HtmlDocument.Option??????
. Они управляют тем, как методы Load
и LoadXML
будут обрабатывать ваш HTML / XHTML.
Существует также скомпилированный файл справки HtmlAgilityPack.chm, в котором есть полная ссылка для каждого из объектов. Обычно это находится в базовой папке решения.