从字符串中删除所有HTML?

时间:2011-02-23 18:43:53

标签: c# .net

我见过可以删除标签的正则表达式,这很棒,但我也有像

这样的东西
 

这实际上不是来自HTML文件。它实际上来自一个字符串。我正在从SharePoint Web服务中提取数据,这使我可以使用/生成的HTML用户

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

所以,我正在解析100-900行,每行8-20列。

1 个答案:

答案 0 :(得分:9)

查看HTML Agility Pack,它是一个HTML解析器,可用于从文档中的HTML节点中提取InnerText

就像SO pointed out many 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");

希望这有帮助。