HtmlAgility ParseErrors, propriété

html-agility-pack

Question

Quelles erreurs puis-je m'attendre à réparer la bibliothèque HtmlAgility? Je sais par expérience qu’il peut fermer une balise manquante, comme:

<car>Nissan</car

Quand faire Load ou LoadHtml, il va le réparer, comme:

<car>Nissan</car

Je sais aussi que la collection ParseErorrs peut déterminer Reason, Stream, etc.

Existe-t-il une liste d'erreurs (ou pouvez-vous dire, à partir de votre propre expérience) quelle est la fiabilité de HtmlAgility pour la correction des erreurs et quelles erreurs ne peuvent pas être réparées par HtmlAgility?

Réponse populaire

Historiquement, Html Agility Pack n'a jamais été conçu pour corriger le code HTML, mais plutôt pour pouvoir le charger, le modifier et le sauvegarder, même si ce code contient des erreurs.

Cela signifie que cela corrigera les erreurs qui sont généralement corrigées automatiquement par les navigateurs, comme celui que vous indiquez dans votre question. La liste des erreurs a été déterminée de manière expérimentale et vous pouvez parcourir le code source pour en savoir plus. Cela étant dit, il a été conçu en 2000/2001, donc les choses ont peut-être changé dans ce domaine :-)

La collection ParseErrors contiendra des objets HtmlParseError avec un code. Le code est une énumération documentée:

    /// 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

Il existe également une propriété OptionFixNestedTags sur HtmlDocument (la valeur par défaut est false), capable de corriger les balises LI, TR, TH, TD lorsque des erreurs d’emboîtement sont détectées. Cela signifie que s’il détecte un TR de clôture sans tous les TD de fermeture nécessaires, ils seront automatiquement fermés. Encore une fois, c’est exactement ce que fera le navigateur avec du HTML mal formé.




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