Errore di codifica quando si utilizza HTML Agility Pack

c# html html-agility-pack parsing

Domanda

Sto cercando di analizzare un documento html utilizzando un codice che ho trovato da questo sito reale ma continuo a ricevere un errore di analisi

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");
                }
            }
        }

Qualsiasi aiuto sarebbe apprezzato :)

Risposta accettata

In natura, l'HTML potrebbe non essere conforme, non conforme e non convalidare. Solo XHTML o HTML molto semplice andrà senza popolamento di ParseErrors. Ho notato che HTML Agility Pack è abbastanza robusto e continuerà a costruire un albero DOM decente dalla maggior parte delle fonti HTML, anche se vengono generati ParseErrors. Eliminare il resto e lasciare che il blocco else venga eseguito normalmente.

Se non ha costruito l'albero DOM, allora dovresti investigare su ParseError (s) che sono stati generati. Se è stato creato solo un albero parziale, provare a ricorrere sui nodi, stampare o messagebox per vedere quali parti dell'albero DOM sono state create o meno. Potresti non aver bisogno di tutto l'albero.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché