2010-03-29 24 views
6

No pude encontrar ningún tutorial en su sitio. Me pregunto si puedo usar Html Agility Pack y usarlo para analizar una cadena.¿Puedo usar Html Agility Pack para esto?

Al igual que decir que tengo

string = "<b>Some code </b> 

podría usar paquete de agilidad para deshacerse de las etiquetas <b>? Todos los ejemplos que he visto hasta ahora se han estado cargando como documentos html.

+0

ejemplo añadió –

+1

... Se podría hacer incluso simlier con HAP, en una línea: 'texto var = HtmlNode.CreateNode ("Parte del código") .InnerText;' – Alex

Respuesta

8

Si es html, entonces sí.

string str = "<b>Some code</b>"; 
// not sure if needed 
string html = string.Format("<html><head></head><body>{0}</body></html>", str); 
HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(html); 

// look xpath tutorials for how to select elements 
// select 1st <b> element 
HtmlNode bNode = doc.DocumentNode.SelectSingleNode("b[1]"); 
string boldText = bNode.InnerText; 
+0

Ok entonces lo que iba a hacer con ella ¿cómo haré algunos análisis? – chobo2

+0

Hmm gracias, pero copié y pegué ese código en una aplicación de consola y importé html agility, pero en la línea HtmlNode recibí una excepción de referencia nula. – chobo2

+0

Quizás sea HtmlNode bNode = doc.DocumentNode.SelectSingleNode ("/ b [1]"); –

2

No creo que este sea realmente el mejor uso de HtmlAgilityPack.

Normalmente veo personas tratando de analizar grandes cantidades de html usando expresiones regulares y las apunto hacia HtmlAgilityPack, pero en este caso creo que sería mejor usar una expresión regular.

Roy Osherove tiene un blog que describe cómo se puede despojar a cabo todo el HTML de un fragmento:

Incluso si lo hizo obtener el XPath correcta con la muestra de Mika Kolari esto sería solo funciona para un fragmento con una etiqueta <b> y se rompería si el código cambiara.

Cuestiones relacionadas