2011-02-23 18 views
5

he visto expresiones regulares que se pueden quitar las etiquetas, que es grande, pero también tengo cosas por el estilo¿Eliminar todo el HTML de una cadena?

  

etc.

Esto no es en realidad de un archivo HTML. En realidad es de una cadena. Estoy tirando abajo los datos de servicios web de SharePoint, lo que me da el código HTML los usuarios podrían utilizar/Get generó como

<div>Hello! Please remember to clean the break room!!! &quot;bob&quote; <BR> </div> 

lo tanto, estoy de análisis a través de 100-900 filas con 8-20 columnas cada una.

+4

Enlace obligatorio: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – thecoop

Respuesta

9

Eche un vistazo a HTML Agility Pack, es un analizador HTML que puede usar para extraer el InnerText de los nodos HTML en un documento.

Como ha sido pointedoutmany times aquí en SO, no se puede confiar en el análisis de HTML a una expresión regular. Hay ocasiones en que puede considerarse apropiado (para tareas extremadamente limitadas); pero, en general, HTML es demasiado complejo y propenso a la irregularidad. Bad things can happen when you try to parse HTML with Regular Expressions.

El uso de un analizador como HAP le ofrece mucha más flexibilidad. A (en bruto) ejemplo de lo que podría ser similar a usarlo para esta tarea:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.Load("path to your HTML document"); 

StringBuilder content = new StringBuilder(); 
foreach (var node in doc.DocumentNode.DescendantNodesAndSelf()) 
{ 
    if (!node.HasChildNodes) 
    { 
     sb.AppendLine(node.InnerText); 
    } 
} 

También se pueden realizar consultas XPATH en el documento, en caso de que sólo está interesado en un nodo específico o conjunto de nodos :

var nodes = doc.DocumentNode.SelectNodes("your XPATH query here"); 

Espero que esto ayude.

+0

¿Puede proporcionar un código real que demuestre cómo usarlo? HAP para realizar la tarea? – dtb

+0

@dtb Cosa segura. – Donut

Cuestiones relacionadas