64 votes

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 qui peut être utilisé en C #.

Actuellement, j'analyse des chaînes html avec regex et je pense qu'il serait beaucoup mieux d'avoir quelque chose comme le sélecteur css dans jQuery correspondant à mes éléments souhaités.

79voto

Jamie Treworgy Points 13495

Mise à jour 10/18/2012

CsQuery est maintenant dans la version 1.3. La dernière version intègre un C# port du validateur.nu HTML5 analyseur. Comme un résultat CsQuery va désormais produire un DOM qui utilise le HTML5 spec pour les invalides de balisage de la manipulation et est entièrement conforme aux normes.

Réponse Originale À Cette Question

Vieille question, mais une nouvelle réponse. J'ai récemment publié la version 1.1 de CsQuery, jQuery port .NET 4 écrit en C# que j'ai travaillé pendant environ un an. Également sur NuGet "CsQuery"

La version actuelle met en œuvre tous les CSS2 & sélecteurs CSS3, toutes les extensions jQuery, et tous jQuery DOM méthodes de manipulation. Il a étendu la couverture de test, y compris tous les tests de jQuery et de grésillement (le jQuery, CSS sélection du moteur). J'ai également inclus quelques tests de performance pour les comparaisons directes avec Fizzler, pour la plupart, CsQuery considérablement supérieure à celle de. L'exception est le chargement du HTML dans le premier endroit où Fizzler est plus rapide; je suppose que c'est parce que fizzler de ne pas construire un index. Vous obtenez ce que le temps de retour après votre première sélection.

Il y a de la documentation sur le site github, mais à un niveau de base, il fonctionne comme ceci:

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

CQ dom = CQ.Create(htmlString);

Charge de façon synchrone à partir du web

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

Charger de manière asynchrone (non bloquant)

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

Exécuter les sélecteurs & faire des trucs jQuery

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

l' CQ objet, c'est comme thejQuery objet. La propriété d'indexation utilisée ci-dessus est la méthode par défaut (comme $(...).

Sortie:

string html = dom.Render();

70voto

Andy S Points 3975

Vous devriez absolument 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.

1voto

Frank Schwieterman Points 13519

Pour XML, vous pouvez utiliser XPath ...

1voto

patjbs Points 1352

Je ne suis pas tout à fait clair de ce que vous essayez d’obtenir, mais si vous essayez d’extraire des données d'un document HTML, je vous recommande de le charger avec un analyseur syntaxique . interroger l'objet pour extraire les éléments souhaités.

L'analyseur 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.

1voto

Daniel Points 794

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X