Existe-t-il un sélecteur CSS / HTML de type jQuery pouvant être utilisé en C #?

Je me demande s’il existe un sélecteur CSS de type jQuery pouvant être utilisé en C #.

Actuellement, je suis en train d’parsingr des chaînes html en utilisant regex et j’ai pensé qu’il serait plus intéressant d’avoir quelque chose comme le sélecteur CSS dans jQuery pour correspondre à mes éléments souhaités.

Vous devriez certainement voir CsQuery de @ jamietre . Découvrez sa réponse à cette question!

Fizzler et Sharp-Query offrent des fonctionnalités similaires, mais les projets semblent être abandonnés.

Mise à jour 18/10/2012

CsQuery est maintenant en version 1.3. La dernière version intègre un port C # de l’parsingur validator.nu HTML5. Par conséquent, CsQuery va maintenant produire un DOM qui utilise la spécification HTML5 pour la gestion des balises non valides et qui est complètement conforme aux normes.

Réponse originale

Ancienne question mais nouvelle réponse. J’ai récemment publié la version 1.1 de CsQuery, un port jQuery pour .NET 4 écrit en C # sur lequel je travaille depuis environ un an. Aussi sur NuGet comme “CsQuery”

La version actuelle implémente tous les sélecteurs CSS2 et CSS3, toutes les extensions jQuery et toutes les méthodes de manipulation DOM jQuery. Il dispose d’une large couverture de tests incluant tous les tests de jQuery et de sizzle (le moteur de sélection CSS jQuery). J’ai également inclus des tests de performance pour des comparaisons directes avec Fizzler; CsQuery surpasse en grande partie sa performance. L’exception consiste en fait à charger le code HTML en premier lieu, où Fizzler est plus rapide; Je suppose que c’est parce que fizzler ne construit pas d’index. Vous obtenez ce délai après votre première sélection, cependant.

Il existe une documentation sur le site github, mais à un niveau élémentaire, cela fonctionne comme ceci:

Créer à partir d’une chaîne de HTML

CQ dom = CQ.Create(htmlSsortingng); 

Charger de manière synchrone à partir du Web

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

Charger de manière asynchrone (non bloquante)

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

Exécuter des sélecteurs et faire des trucs jQuery

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

L’object CQ est comme l’object jQuery. L’indexeur de propriétés utilisé ci-dessus est la méthode par défaut (comme $(...) .

Sortie:

 ssortingng html = dom.Render(); 

Pour XML, vous pouvez utiliser XPath …

Je ne suis pas tout à fait clair sur ce que vous essayez d’atteindre, mais si vous avez un document HTML à partir duquel vous essayez d’extraire des données, je vous recommande de le charger avec un parsingur . interroger l’object pour extraire les éléments souhaités.

L’parsingur que j’ai lié ci-dessus permet d’utiliser les requêtes XPath, ce qui ressemble à ce que vous recherchez.

Faites-moi savoir si j’ai mal compris.

Pas tout à fait comme jQuery, mais cela peut aider: http://www.codeplex.com/htmlagilitypack