Erreur de codage lors de l'utilisation de HTML Agility Pack

c# html html-agility-pack parsing

Question

J'essaie d'analyser un document html à l'aide du code trouvé sur ce site, mais j'obtiens une erreur d'analyse.

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

Toute aide serait appréciée :)

Réponse acceptée

Dans la nature, HTML est susceptible d'être non conforme, non conforme et non validant. Seul le format XHTML ou HTML très simple ira sans remplir ParseErrors. J'ai remarqué que le pack d'agilité HTML est assez robuste et qu'il continuera à créer une arborescence DOM décente à partir de la plupart des sources HTML, même si ParseErrors est généré. Supprimez le paramètre else et laissez le bloc else s'exécuter normalement.

S'il n'a pas construit l'arborescence DOM, vous devez alors rechercher les erreurs ParseError générées. S'il ne construit qu'une arborescence partielle, essayez de récursir sur les nœuds, d'imprimer ou d'envoyer des messages pour déterminer quelles parties de l'arborescence DOM ont été construites ou non. Vous n'avez peut-être pas besoin de tout l'arbre.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi