Error de codificación al utilizar HTML Agility Pack

c# html html-agility-pack parsing

Pregunta

Estoy intentando analizar un documento html usando un código que encontré en este sitio real, pero sigo recibiendo un error de análisis

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(@"C:\Documents and Settings\Mine\My Documents\Random.html");

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

        // 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
            MessageBox.Show("Oh no");
        }
        else
        {

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

                if (bodyNode != null)
                {
                    MessageBox.Show("Hello");
                }
            }
        }

Cualquier ayuda sería apreciada :)

Respuesta aceptada

En la naturaleza, es probable que HTML sea no conforme, no conforme y no validado. Solo XHTML o HTML muy simple quedarán sin llenar ParseErrors. Me he dado cuenta de que el paquete de agilidad HTML es bastante robusto y aún construirá un árbol DOM decente a partir de la mayoría de las fuentes HTML, incluso si se generan ParseErrors. Suelta el else, y deja que el bloque else se ejecute normalmente.

Si no construyó el árbol DOM, entonces debería investigar los ParseError (s) que se generaron. Si solo construyó un árbol parcial, intente recurrir sobre los nodos, imprimiendo o enviando un mensaje para ver qué partes del árbol DOM se construyeron o no. Puede que no necesites todo el árbol.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué