Aggiornamento 10/18/2012
CsQuery è ora in versione 1.3. L'ultima versione include una porta C# del parser HTML5 validator.nu. Di conseguenza, CsQuery produrrà un DOM che utilizza le specifiche HTML5 per la gestione del markup non valida ed è completamente conforme agli standard.
vecchia questione, ma nuova risposta risposta originale. Recentemente ho rilasciato la versione 1.1 di CsQuery, una porta jQuery per .NET 4 scritta in C# su cui ho lavorato per circa un anno. Sempre su NuGet come "CsQuery"
La versione corrente implementa tutti i selettori CSS3 & CSS3, tutte le estensioni jQuery e tutti i metodi di manipolazione DOM jQuery. Ha una vasta copertura di test che include tutti i test di jQuery e sizzle (il motore di selezione CSS di jQuery). Ho anche incluso alcuni test delle prestazioni per confronti diretti con Fizzler; per la maggior parte CsQuery lo supera in modo drammatico. L'eccezione è in realtà il caricamento dell'HTML in primo luogo dove Fizzler è più veloce; Presumo che questo sia dovuto al fatto che fizzler non crea un indice. Si ottiene quel tempo indietro dopo la prima selezione, però.
C'è documentazione sul sito GitHub, ma ad un livello di base funziona in questo modo:
Creare da una stringa di codice HTML
CQ dom = CQ.Create(htmlString);
carico in modo sincrono dal web
CQ dom = CQ.CreateFromUrl("http://www.jquery.com");
Carica in modo asincrono (non bloccante)
CQ.CreateFromUrlAsync("http://www.jquery.com", responseSuccess => {
Dom = response.Dom;
}, responseFail => {
..
});
Run selettori & fanno jQuery roba
var childSpans = dom["div > span"];
childSpans.AddClass("myclass");
l'oggetto CQ
è come oggetto thejQuery. L'indicizzatore proprietà utilizzata sopra è il metodo di default (come $(...)
uscita:.
string html = dom.Render();
Quindi, credo che non c'è al momento nulla di tutto questo – Dave
Come funziona XPath non l'interrogazione soddisfare le vostre esigenze catena di carico in oggetto DOM con? Parser XML o HTML e query per elementi basati su qualsiasi cosa tu voglia. Proprio come jQuery. – patjbs
Se desideri una struttura di query di grep più semplice, hai provato ad usare le query di linq? – patjbs