Как использовать.NET Fizzler, не полагаясь на HtmlAgilityPack?

Fizzler - это библиотека селекторов W3C для документов HTML. Nuget предлагает две версии: одна зависит от HtmlAgilityPack, другая - не от HtmlAgilityPack.

Я могу только найти документацию и пример кода для проекта, который зависит от HtmlAgilityPack. Я хочу использовать тот, у которого нет этой зависимости, потому что я всегда стремлюсь уменьшить свои зависимости и сделать вещи простыми.

Где я могу найти документацию / пример кода для проекта Fizzler, который не зависит от HtmlAgilityPack?

1 ответ

Решение

Для понимания дизайна, настройки и зависимостей Fizzler важно понимать, что сама спецификация CSS Selectors описывается в терминах шаблонов связывания с элементами в дереве документа. Тот факт, что большинство приведенных примеров относятся к элементам в дереве документа HTML, является побочным продуктом селекторов CSS, образующих основную часть CSS, и что все эти технологии объединяются при отображении веб-страницы. Это самое распространенное приложение. Однако, если вы возьмете селекторы CSS в качестве механизма запросов в произвольной системе документов, использующей модель элементов и атрибутов (и пространств имен), тогда они могут применяться вне домена веб-страниц. Автономная или базовая версия Fizzler делает именно это. Он содержит общие биты. http://www.nuget.org/packages/Fizzler.Systems.HtmlAgilityPack/ представляет собой конкретную реализацию общих битов поверх модели дерева API и HTML-документов одной конкретной библиотеки: HtmlAgilityPack.

Разделение позволяет любому использовать Fizzler для реализации селекторов CSS поверх другой библиотеки (если другая станет более актуальной / популярной) или дерева документов, потому что можно повторно использовать синтаксический анализатор грамматики селекторов CSS и общую структуру выбора, в которой нет знаний или связей. в HtmlAgilityPack.

Как один из первоначальных авторов Fizzler, я предоставил конкретную реализацию для HtmlAgilityPack, который был самым популярным HTML-анализатором и библиотекой DOM для.NET Framework (и, вероятно, остается на сегодняшний день). Я был / я надеюсь, что тогда сообщество будет использовать основную библиотеку для предоставления реализаций для других библиотек HTML и систем документов.

Можно сказать, что утилита селекторов CSS вне HTML является чисто академической, но репозиторий Fizzler содержит реализацию для WinForms, которая, хотя и является экспериментом с моей стороны, демонстрирует, что селекторы CSS вполне могут быть использованы для выбора элементов управления формы на основе их имени (сопоставленного как ID) и свойств (сопоставленных как атрибуты). Вы можете представить себе применение CSS-подобного языка стилей для элементов управления WinForms и использование селекторов CSS для определения того, какие стили применяются к каким элементам управления.

Архитектура и дизайн Fizzler - это причина, по которой вы не найдете никакой документации или примеров, в которых просто используется базовая библиотека. Возможно, он слишком общий для того, кто ищет немедленное и практическое использование в приложении. Документация и примеры будут наиболее полезны для людей, которые хотят реализовать CSS-выборку поверх других библиотек и деревьев элементов. Хотя этого может не хватать в письменной английской форме, я надеялся, что Fizzler.Systems.HtmlAgilityPack (наряду с некоторыми другими) послужит хорошим и простым исследованием (ядро которого может быть сведено к менее чем 200 строкам кода).).

Сам Fizzler.Systems.HtmlAgilityPack документируется благодаря использованию двух стандартов: CSS Selectors и Selectors API. Последний добавляет QuerySelector а также QuerySelectorAll за HtmlNode из HtmlAgilityPack, так же, как вы найдете в браузере.

Другие вопросы по тегам