从字符串中删除所有HTML标签?

5
我看过可以删除标签的正则表达式,这很好,但我还有像这样的东西。
 

等等。

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

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

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

4
必传链接:https://dev59.com/X3I-5IYBdhLWcg3wq6do#1732454 - thecoop
1个回答

9
请看HTML Agility Pack,它是一个HTML解析器,您可以使用它从文档中提取节点的InnerText
正如在SO上多次指出 一样 许多次,您不能将HTML解析信任给正则表达式。有时可能会被认为是适当的(仅对于极其有限的任务),但总体而言,HTML过于复杂且容易出现不规则性。尝试使用正则表达式解析HTML会出现问题
使用解析器(如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");

希望这有所帮助。

你能提供一个实际的代码示例来演示如何使用HAP执行任务吗? - dtb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接