Свойство ParseErrors HtmlAgility

html-agility-pack

Вопрос

Какие ошибки я могу исправить, чтобы исправить библиотеку HtmlAgility? Я знаю по собственному опыту, что он может закрыть отсутствующий тег, например:

<car>Nissan</car

Когда загрузите Load или LoadHtml, он исправит его, например:

<car>Nissan</car>

Я также знаю, что коллекция ParseErorrs может определять причину, поток и т. Д.

Есть ли список ошибок (или вы можете сказать по собственному опыту), насколько надежна HtmlAgility для исправления ошибок и какие ошибки не могут быть исправлены с помощью HtmlAgility?

Популярные ответы

Исторически Html Agility Pack никогда не предназначался для исправления Html, а скорее для загрузки, изменения и сохранения, даже если этот Html имеет ошибки.

Это означает, что он исправляет ошибки, которые, как правило, автоматически фиксируются браузерами, например, те, которые вы показываете в своем вопросе. Список ошибок был определен экспериментально, и вы можете просмотреть источник, чтобы получить глубокое представление об этом. Это, как говорится, было фактически спроектировано еще в 2000/2001 годах, поэтому в этой области все могло измениться :-)

Коллекция ParseErrors будет содержать объекты HtmlParseError с кодом. Код - это перечисление, которое задокументировано:

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

Существует также OptionFixNestedTags свойство на HTMLDocument (значение по умолчанию является ложным), который способен фиксировать LI, TR, TH, TD - тег , когда ошибки гнездования обнаружены. Это означает, что если он обнаруживает закрытие TR без всего необходимого закрывающего TD, они будут автоматически закрыты. Опять же, это именно то, что браузер будет делать с искаженным Html.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow