如何使用C#清理HTML标记

时间:2009-06-24 13:40:58

标签: c# html

例如:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>title</title>
</head>
<body>
    <a href="aaa.asp?id=1"> I want to get this text </a>
    <div>
        <h1>this is my want!!</h1>
        <b>this is my want!!!</b>
    </div>
</body>
</html>

结果是:

 I want to get this text 
this is my want!!
this is my want!!!

6 个答案:

答案 0 :(得分:30)

HTML Agility Pack

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(html);
    string s = doc.DocumentNode.SelectSingleNode("//body").InnerText;

答案 1 :(得分:16)

使用此功能......

public string Strip(string text)
{
    return Regex.Replace(text, @"<(.|\n)*?>", string.Empty);
}

答案 2 :(得分:1)

我建议使用类似HTMLTidy.

的内容

Here's a tutorial就可以帮助您入门。

答案 3 :(得分:0)

为什么要将其作为服务器端?

为此,您必须创建容器元素runat="server",然后获取元素的innerText

您可以在javascript中执行相同的操作,而无需使元素runat =“server”

答案 4 :(得分:0)

如果您只想删除html标签,请使用正则表达式删除“&lt;”之间的任何内容和“&gt;”。

答案 5 :(得分:0)

您可以从下面的这个简单功能开始。 免责声明:此代码适用于基本HTML,但不会处理所有有效的HTML情况和边缘情况。引号内的标签就是一个例子。这段代码的优点是你可以轻松地在调试器中执行,并且可以很容易地修改它以适合特定于你的边缘情况。

public static string RemoveTags(string html)
    {
        string returnStr = "";
        bool insideTag = false;
        for (int i = 0; i < html.Length; ++i)
        {
            char c = html[i];
            if (c == '<')    
                insideTag = true;
            if (!insideTag)
                returnStr += c;
            if (c == '>')         
                insideTag = false;
        }
        return returnStr;        
    }