Я использовал HtmlAgilityPack в прошлом для анализа HTML в .NET, но мне не нравится тот факт, что он использует только модель DOM.
На больших документах и / или с тяжелыми уровнями вложенности можно использовать переполнение стека или исключение из памяти. Кроме того, в общем случае модель синтаксического анализа, основанная на DOM, использует значительно большую память, чем потоковый подход, как правило, потому что процесс, который хочет потреблять HTML, может потребоваться только несколько элементов, которые будут доступны одновременно.
Кто-нибудь знает о достойном парсере HTML для .Net, который позволяет вам анализировать HTML так же, как класс XmlReader
? т.е. в прямом поточном режиме
Обычно я использую SgmlReader для этого: https://github.com/MindTouch/SGMLReader
Как и другие пользователи, есть проблемы в том, что в HTML не соблюдаются одни и те же корректные правила XML, поэтому его сложно разглядеть, но SgmlReader обычно выполняет довольно хорошую работу.