2011-02-23 104 views
5

我見過的正則表達式,可以刪除標記,這是偉大的,但我也有這樣的東西去掉字符串中的所有HTML?

  

這實際上不是從HTML文件。它實際上來自一個字符串。我從SharePoint Web服務拉低數據,這使我的HTML用戶可以使用/獲取生成像

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

所以,我通過100-900行解析每8-20列。

+4

強制鏈接:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – thecoop 2011-02-23 18:46:40

回答

9

查看HTML Agility Pack,它是一個HTML解析器,可用於從文檔中的HTML節點中提取InnerText

由於一直以來pointedoutmany times在這裏,你不能信任HTML解析到正則表達式。有些時候它可能被認爲是合適的(對於極其有限的任務);但總的來說,HTML太複雜,太容易出現不規則性。 Bad things can happen when you try to parse HTML with Regular Expressions

使用諸如HAP之類的解析器可爲您提供更大的靈活性。

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); 
    } 
} 

您還可以對文檔執行XPATH查詢,如果您只對特定的節點感興趣或一組節點:什麼它看起來喜歡用它完成這個任務,(粗)例如:

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

希望這會有所幫助。

+0

你能否提供演示如何使用的實際代碼HAP執行任務? – dtb 2011-02-23 18:50:50

+0

@dtb當然。 – Donut 2011-02-23 19:00:36