Mit welchen Fehlern kann ich die HtmlAgility-Bibliothek reparieren? Ich weiß aus eigener Erfahrung, dass es ein fehlendes Tag schließen kann, wie:
<car>Nissan</car
Wann Load oder LoadHtml, wird es reparieren, wie:
<car>Nissan</car>
Ich weiß auch, dass die ParseEorrs-Sammlung Grund, Stream usw. bestimmen kann.
Gibt es eine Liste von Fehlern (oder können Sie aus eigener Erfahrung feststellen, wie verlässlich HtmlAgility ist, um Fehler zu beheben und welche Fehler können nicht durch HtmlAgility behoben werden?
Historisch gesehen war Html Agility Pack niemals dafür ausgelegt, Html zu reparieren , sondern vielmehr in der Lage zu sein, es zu laden, zu modifizieren und zu speichern, selbst wenn dieses HTML Fehler aufweist.
Es bedeutet, dass Fehler behoben werden, die im Allgemeinen automatisch von Browsern behoben werden, wie der, den Sie in Ihrer Frage zeigen. Die Liste der Fehler wurde experimentell ermittelt, und Sie können die Quelle nach einem tiefen Einblick durchsuchen. Das heißt, es wurde tatsächlich in 2000/2001 Jahren entworfen, so dass sich die Dinge in diesem Bereich möglicherweise geändert haben :-)
Die ParseErrors-Auflistung enthält HtmlParseError-Objekte mit einem Code. Der Code ist eine Enumeration, die dokumentiert ist:
/// A tag was not closed.
TagNotClosed,
/// A tag was not opened.
TagNotOpened,
/// There is a charset mismatch between stream and declared (META) encoding.
CharsetMismatch,
/// An end tag was not required.
EndTagNotRequired,
/// An end tag is invalid at this position.
EndTagInvalidHere
Es gibt auch eine OptionFixNestedTags
Eigenschaft in HtmlDocument (Standardwert ist false), die LI-, OptionFixNestedTags
TH- und TD-Tags reparieren kann, wenn Verschachtelungsfehler erkannt werden. Es bedeutet, wenn es eine schließende TR ohne alle notwendigen schließenden TD erkennt, werden sie automatisch geschlossen. Dies ist genau das, was der Browser mit falsch formatiertem HTML macht.