如何使用C#清理HTML标记

gua*_*ike 23 html c#

例如:

<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>
Run Code Online (Sandbox Code Playgroud)

结果是:

 I want to get this text 
this is my want!!
this is my want!!!
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 31

HTML敏捷包:

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(html);
    string s = doc.DocumentNode.SelectSingleNode("//body").InnerText;
Run Code Online (Sandbox Code Playgroud)

  • 好吧,我已经使用Server.HtmlDecode()解决了它 (2认同)

die*_*dsp 16

使用此功能......

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

  • 一个更好的正则表达式是`<[^>]*>`作为`?`,因为它使得它非常慢. (4认同)
  • Ick,这个问题在SO中重复了很多,同样糟糕的答案也重复了很多.正如我在另一篇相同的帖子中所说的那样:"你不应该使用正则表达式来解析像HTML这样的无上下文语法.如果HTML是由某个外部实体提供的,那么它可以很容易地被操纵以逃避你的正则表达式". (3认同)