Есть ли jQuery-подобный CSS / HTML-селектор, который можно использовать в C #?

Мне интересно, есть ли jQuery-подобный css-селектор, который можно использовать в C #.

В настоящее время я разбираю некоторые html-строки с использованием regex и думал, что было бы намного лучше иметь что-то вроде селектора css в jQuery, чтобы соответствовать моим желаемым элементам.

Вы обязательно должны увидеть CsQuery @ jamietre . Проверьте его ответ на этот вопрос!

Fizzler и Sharp-Query обеспечивают аналогичную функциональность, но проекты, похоже, заброшены.

Обновление 10/18/2012

CsQuery теперь находится в версии 1.3. Последняя версия включает порт C # для анализатора validator.nu HTML5. В результате CsQuery теперь создаст DOM, который использует спецификацию HTML5 для недопустимой обработки разметки и полностью совместим со стандартами.

Оригинальный ответ

Старый вопрос, но новый ответ. Недавно я выпустил версию 1.1 CsQuery, порт jQuery для .NET 4, написанный на C #, над которым я работал около года. Также на NuGet, как «CsQuery»,

В текущем выпуске реализованы все селектора CSS2 и CSS3, все расширения jQuery и все методы манипуляции JQuery DOM. Это обширное тестовое покрытие, включая все тесты из jQuery и sizzle (механизм выбора jQuery CSS). Я также включил некоторые тесты производительности для прямых сравнений с Fizzler; по большей части CsQuery значительно превосходит его. Исключение фактически загружает HTML в первую очередь, где Fizzler быстрее; Я предполагаю, что это потому, что fizzler не создает индекс. Тем не менее, вы получаете это время после своего первого выбора.

Там есть документация на сайте github, но на базовом уровне она работает следующим образом:

Создать из строки HTML

CQ dom = CQ.Create(htmlString); 

Загружать синхронно из Интернета

 CQ dom = CQ.CreateFromUrl("http://www.jquery.com"); 

Загружать асинхронно (без блокировки)

 CQ.CreateFromUrlAsync("http://www.jquery.com", responseSuccess => { Dom = response.Dom; }, responseFail => { .. }); 

Запустить селектор и сделать jQuery

 var childSpans = dom["div > span"]; childSpans.AddClass("myclass"); 

объект CQ похож на объект jQuery. Указатель свойств, используемый выше, является методом по умолчанию (например, $(...) .

Вывод:

 string html = dom.Render(); 

Для XML вы можете использовать XPath …

Я не совсем понимаю, что вы пытаетесь достичь, но если у вас есть документ HTML, из которого вы пытаетесь извлечь данные, я бы порекомендовал его загрузить с помощью синтаксического анализатора , и тогда это становится довольно тривиально запросите объект, чтобы вытащить нужные элементы.

Парсер, связанный выше, позволяет использовать запросы XPath, которые звучат так, как вы ищите.

Дайте мне знать, если я неправильно понял.

Не совсем jQuery нравится, но это может помочь: http://www.codeplex.com/htmlagilitypack

  • Каков самый быстрый способ выбора элементов-потомков в jQuery?
  • Как получить доступ к свойствам стиля псевдоэлементов с помощью jQuery?
  • Является ли jQuery каким-либо кэшированием «селекторов»?
  • Выбрать элемент по точному соответствию его содержимому
  • Установите опцию выбора «selected», по значению
  • Как получить выражение селектора jQuery в виде текста?
  • Элемент или class LIKE для jQuery?
  • Изменение CSS-элемента дочернего элемента при зависании родительского элемента
  • Как определить, работает ли браузер Chrome с помощью jQuery?
  • Выделение селектора jQuery
  • Подстановочные знаки в селекторах jQuery
  • Давайте будем гением компьютера.