2011-09-11 27 views
13

Necesito poder simplemente especificar elementos de html en mi aplicación C#. Solo usaría Linq para Sql, pero esto necesita ser configurable/serializable a una cadena. Por supuesto, podría usar XPath, pero algo como Sizzle en este momento es mucho más natural para la mayoría de las personas.¿Hay una implementación de selectores Sizzle/jQuery en C#?

¿Alguien sabe si existe una implementación de selectores sizzle en .Net?

+6

[CsQuery] (http://github.com/jamietre/CsQuery) parece ser muy prometedor. Todavía no lo he usado, solo lea sobre él, después de hojear esta pregunta. No debería estar cerrado. – robert4

Respuesta

18

Yepp, Fizzler. Se basa en HtmlAgilityPack y funciona muy bien, aunque los autores dicen que es beta. Lo usamos en producción en un gran proyecto. Muestras de la documentación:

// Load the document using HTMLAgilityPack as normal 
var html = new HtmlDocument(); 
html.LoadHtml(@" 
    <html> 
     <head></head> 
     <body> 
     <div> 
      <p class='content'>Fizzler</p> 
      <p>CSS Selector Engine</p></div> 
     </body> 
    </html>"); 

// Fizzler for HtmlAgilityPack is implemented as the 
// QuerySelectorAll extension method on HtmlNode 

var document = htmlDocument.DocumentNode; 

// yields: [<p class="content">Fizzler</p>] 
document.QuerySelectorAll(".content"); 

// yields: [<p class="content">Fizzler</p>,<p>CSS Selector Engine</p>] 
document.QuerySelectorAll("p"); 

// yields empty sequence 
document.QuerySelectorAll("body>p"); 

// yields [<p class="content">Fizzler</p>,<p>CSS Selector Engine</p>] 
document.QuerySelectorAll("body p"); 

// yields [<p class="content">Fizzler</p>] 
document.QuerySelectorAll("p:first-child"); 
Cuestiones relacionadas