Свойство HtmlAgility ParseErrors - PullRequest
0 голосов
/ 19 марта 2011

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

<car>Nissan</car

При выполнении Load или LoadHtml это исправит, например:

<car>Nissan</car>

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

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

1 Ответ

5 голосов
/ 20 марта 2011

Исторически сложилось так, что 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 (по умолчанию установлено значение false), которое может исправлять теги LI, TR, TH, TD при обнаружении ошибок вложения. Это означает, что если он обнаружит закрывающий TR без всех необходимых закрывающих TD, они будут закрыты автоматически. Опять же, это именно то, что браузер будет делать с искаженным HTML.

...