Codierungsfehler bei Verwendung von HTML Agility Pack

c# html html-agility-pack parsing

Frage

Ich versuche, ein HTML-Dokument mit etwas Code zu analysieren, den ich von dieser tatsächlichen Seite fand, aber ich bekomme immer einen Analysefehler

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

Jede Hilfe wäre willkommen :)

Akzeptierte Antwort

In der freien Wildbahn ist HTML wahrscheinlich nicht konform, nicht konform und nicht validierend. Nur XHTML oder sehr einfaches HTML wird ohne das Auffüllen von ParseErrors gehen. Ich habe bemerkt, dass das HTML Agility Pack ziemlich robust ist und trotzdem aus den meisten HTML-Quellen einen ordentlichen DOM-Baum erstellt, selbst wenn ParseErrors generiert werden. Lassen Sie die else ab und lassen Sie diese andernfalls normal ausführen.

Wenn der DOM-Baum nicht erstellt wurde, sollten Sie die generierten ParseError (s) untersuchen. Wenn nur ein Teilbaum erstellt wurde, versuchen Sie, über die Knoten zu rekursieren, zu drucken oder eine Nachricht zu senden, um zu sehen, welche Teile des DOM-Baums erstellt wurden oder nicht. Du brauchst vielleicht nicht den ganzen Baum.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum