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 :)
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.