c# - examples - jquery selector name




Gibt es einen jQuery-ähnlichen CSS/HTML-Selektor, der in C#verwendet werden kann? (4)

Ich frage mich, ob es einen jQuery-ähnlichen CSS-Selektor gibt, der in C # verwendet werden kann.

Zur Zeit analysiere ich einige HTML-Strings mit Regex und dachte, es wäre viel schöner, etwas wie den CSS-Selektor in jQuery zu haben, um meine gewünschten Elemente zu finden.


Für XML können Sie XPath verwenden ...


Ich weiß nicht genau, was Sie erreichen wollen, aber wenn Sie ein HTML-Dokument haben, aus dem Sie Daten extrahieren möchten, würde ich empfehlen, es mit einem parser laden, und dann wird es ziemlich trivial Abfrage das Objekt, um gewünschte Elemente zu ziehen.

Der Parser, den ich oben verlinkt habe, ermöglicht die Verwendung von XPath-Abfragen, was nach dem klingt, wonach Sie suchen.

Lass es mich wissen, wenn ich es falsch verstanden habe.


Sie sollten auf jeden Fall die CsQuery @ Jamietre CsQuery . Überprüfen Sie seine Antwort auf diese Frage!

Fizzler und Sharp-Query bieten ähnliche Funktionen, aber die Projekte scheinen aufgegeben zu sein.


Update 18.10.2012

CsQuery ist jetzt in Version 1.3. Die neueste Version enthält einen C # -Port des HTML5-Parsers validator.nu. Daher wird CsQuery jetzt ein DOM erstellen, das die HTML5-Spezifikation für die Verarbeitung ungültiger Markups verwendet und vollständig den Standards entspricht.

Ursprüngliche Antwort

Alte Frage, aber neue Antwort. Ich habe vor kurzem die Version 1.1 von CsQuery veröffentlicht, einen jQuery-Port für .NET 4, der in C # geschrieben wurde, an dem ich seit ungefähr einem Jahr arbeite. Auch bei NuGet als "CsQuery"

Die aktuelle Version implementiert alle CSS2- und CSS3-Selektoren, alle jQuery-Erweiterungen und alle jQuery-DOM-Manipulationsmethoden. Es verfügt über umfangreiche Testabdeckung einschließlich aller Tests von jQuery und Sizzle (die jQuery CSS-Auswahl-Engine). Ich habe auch einige Leistungstests für direkte Vergleiche mit Fizzler aufgenommen; Zum größten Teil übertrifft CsQuery es dramatisch. Die Ausnahme ist eigentlich das Laden des HTML an erster Stelle, wo Fizzler schneller ist; Ich nehme an, das liegt daran, dass fizzler keinen Index erstellt. Sie bekommen diese Zeit nach Ihrer ersten Auswahl zurück.

Es gibt Dokumentation auf der Github-Website, aber auf einer grundlegenden Ebene funktioniert es so:

Erstellen Sie aus einer HTML-Zeichenfolge

CQ dom = CQ.Create(htmlString);

Synchron vom Web laden

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

Asynchron laden (nicht blockierend)

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

Führen Sie Selektoren aus und führen Sie jQuery-Sachen aus

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

Das CQ Objekt ist wie das jQuery-Objekt. Der oben verwendete Property-Indexer ist die Standardmethode (wie $(...) .

Ausgabe:

string html = dom.Render();




css-selectors