Cómo usar el paquete de agilidad HTML

c# html html-agility-pack

Pregunta

¿Cómo uso el HTML Agility Pack ?

Mi documento XHTML no es completamente válido. Por eso quise usarlo. ¿Cómo lo uso en mi proyecto? Mi proyecto está en C #.

Respuesta popular

Primero, instale el paquete nuget HTMLAgilityPack en su proyecto.

Entonces, como ejemplo:

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
        }
    }
}

(Nota: este código es solo un ejemplo y no es necesariamente el mejor / el único enfoque. No lo use a ciegas en su propia aplicación).

El método HtmlDocument.Load() también acepta un flujo que es muy útil en la integración con otras clases orientadas al flujo en el marco .NET. Mientras que HtmlEntity.DeEntitize() es otro método útil para procesar entidades html correctamente. (gracias Matthew)

HtmlDocument y HtmlNode son las clases que más utilizará. Similar a un analizador XML, proporciona los métodos selectSingleNode y selectNodes que aceptan expresiones XPath.

Preste atención al HtmlDocument.Option?????? propiedades booleanas. Estos controlan cómo los métodos Load y LoadXML procesarán su HTML / XHTML.

También hay un archivo de ayuda compilado llamado HtmlAgilityPack.chm que tiene una referencia completa para cada uno de los objetos. Esto normalmente está en la carpeta base de la solución.



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow