Альтернативы HtmlAgilityPack?
Мне не нравятся некоторые дизайнерские решения, сделанные в HtmlAgilityPack:
- При использовании
SelectNodes
, если ни один из узлов не найден, он возвращает null
, а не пустой набор, поэтому вы не можете просто foreach
над ним без нулевой проверки.
- При попытке выбрать детей с помощью
node.SelectNodes
он фактически ищет из корня документа, если вы не используете descendant::
, который вообще не является очевидным или ожидаемым, IMO.
-
HtmlDocument.Load
не возвращает корень node, который вам нужен в 99% случаев, я думаю
Вы можете не согласиться с этим, конечно, но это не главное. Я ищу что-то другое. Что-то, что ведет себя немного более ожидаемо, или что-то, что использует синтаксис jQuery, будет еще лучше. Предложения?
Ответы
Ответ 1
Запущен проект под названием SharpQuery
В настоящее время поддерживает селектора идентификаторов, классов, тегов и атрибутов.
a
a[href]
a[href^=http://stackoverflow.com]
.class
#id
Обновление: Я не поддерживаю этот проект, извините. CsQuery имеет последние обновления (по состоянию на июль 2013 года), но у меня нет опыта его использования.
Ответ 2
Если вы просто разбираете html, другой вариант может быть SgmlReader.
Если вы изменяете html, не так много.
Не помните, как он ведет себя в отношении вопросов, которые вы подняли, но стоит проверить.