Comment utiliser le pack d'agilité HTML ?
Mon document XHTML n'est pas complètement valide. C'est pourquoi je voulais l'utiliser. Comment l'utiliser dans mon projet? Mon projet est en C #.
Commencez par installer le package de nuget HTMLAgilityPack dans votre projet.
Ensuite, à titre d'exemple:
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: Ce code est un exemple seulement et pas nécessairement la meilleure / seule approche. Ne l'utilisez pas aveuglément dans votre propre application.)
La méthode HtmlDocument.Load()
accepte également un flux très utile pour l'intégration à d'autres classes orientées sur les flux du framework .NET. Bien que HtmlEntity.DeEntitize()
soit une autre méthode utile pour traiter correctement les entités HTML. (merci Matthew)
HtmlDocument
et HtmlNode
sont les classes que vous utiliserez le plus. Semblable à un analyseur XML, il fournit les méthodes selectSingleNode et selectNodes qui acceptent les expressions XPath.
Faites attention à la HtmlDocument.Option??????
propriétés booléennes. Celles-ci contrôlent le LoadXML
méthodes HTML / XHTML par les méthodes Load
et LoadXML
.
Il existe également un fichier d'aide compilé appelé HtmlAgilityPack.chm qui contient une référence complète pour chacun des objets. C'est normalement dans le dossier de base de la solution.