2009-07-04 9 views
0

Ich versuche, eine html doc mit einigen Code zu analysieren ich von dieser aktuellen Seite gefunden aber ich erhalte immer einen Parsing-FehlerEncoding Fehler bei der Verwendung von HTML Agility Pack-

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 mögliche Hilfe würde geschätzt:)

+3

Sie haben uns die * genaue Fehlermeldung * nicht mitgeteilt, und Sie haben uns keine Möglichkeit zur Verfügung gestellt, dies zu reproduzieren (d. H. Beispiel HTML). Aber theoretisch sollte so etwas funktionieren ... –

Antwort

0

In freier 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.

Verwandte Themen