Proprietà HtmlAgility ParseErrors

html-agility-pack

Domanda

Quali errori posso prevedere di correggere la libreria HtmlAgility? So per esperienza personale che può chiudere un tag mancante, come:

<car>Nissan</car

Quando si carica o LoadHtml, lo aggiusterà, come:

<car>Nissan</car>

So anche che la raccolta di ParseErorrs può determinare Reason, Stream, ecc.

C'è un elenco di errori (o puoi dire dalla tua esperienza) quanto è affidabile HtmlAgility per correggere errori e quali errori non possono essere risolti da HtmlAgility?

Risposta popolare

Storicamente, Html Agility Pack non è mai stato progettato per correggere Html, ma piuttosto per essere in grado di caricarlo, modificarlo e ripristinarlo, anche se questo Html contiene errori.

Significa che correggerà gli errori che in generale vengono risolti automaticamente dai browser, come quello mostrato nella tua domanda. L'elenco degli errori è stato determinato sperimentalmente e puoi consultare la fonte per una visione approfondita a riguardo. Detto questo, in realtà è stato progettato nel 2000/2001 anni, quindi le cose potrebbero essere cambiate in quell'area :-)

La raccolta ParseErrors contiene oggetti HtmlParseError con un codice. Il codice è un enum documentato:

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

Esiste anche una proprietà OptionFixNestedTags su HtmlDocument (il valore predefinito è false), che è in grado di correggere i tag LI, TR, TH, TD quando vengono rilevati errori di nidificazione. Significa che se rileva un TR di chiusura senza tutti i TD di chiusura necessari, verrà chiuso automaticamente. Ancora una volta, questo è esattamente ciò che il browser farà con l'Html malformato.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché