【问题标题】:remove only some html tags on c#仅删除 c# 上的一些 html 标签
【发布时间】:2012-10-30 16:32:03
【问题描述】:

我有一个字符串:

string hmtl = "<DIV><B> xpto </B></DIV>

并且需要去掉&lt;div&gt;&lt;/DIV&gt;的标签。结果为:&lt;B&gt; xpto &lt;/B&gt;


只是&lt;DIV&gt; and &lt;/DIV&gt;没有去掉很多html标签,而是保存了&lt;B&gt; xpto &lt;/B&gt;

【问题讨论】:

  • 您要删除的只是&lt;DIV&gt;&lt;/DIV&gt;
  • 对此类任务使用Html Agility Pack
  • @TimSchmelter 您应该将其发布为答案
  • 不,
    是一个例子,我不会删除很多 html 标签,但保存 de 。谢谢
  • 是的,我只带标签(粗体标签)

标签: c# html


【解决方案1】:

使用htmlagilitypack

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("<html>yourHtml</html>");

foreach(var item in doc.DocumentNode.SelectNodes("//div"))// "//div" is a xpath which means select div nodes that are anywhere in the html
{
 item.InnerHtml;//your div content
}

如果你只想要B标签..

foreach(var item in doc.DocumentNode.SelectNodes("//B"))
    {
     item.OuterHtml;//your B tag and its content
    }

【讨论】:

  • @Fernando68 因为它是一个 xpath ,您可以使用多个或条件,如//p | //a | //li
  • 【解决方案2】:

    如果您只是删除 div 标签,这将获得 div 标签以及它们可能具有的任何属性。

    var html = 
      "<DIV><B> xpto <div text='abc'/></B></DIV><b>Other text <div>test</div>" 
    
    var pattern = "@"(\</?DIV(.*?)/?\>)"";  
    
    // Replace any match with nothing/empty string
    Regex.Replace(html, pattern, string.Empty, RegexOptions.IgnoreCase);
    

    结果

    <B> xpto </B><b>Other text test
    

    【讨论】:

      【解决方案3】:

      使用Regex:

      var result = Regex.Replace(html, @"</?DIV>", "");
      

      更新

      正如你mentioned,通过这段代码,正则表达式删除所有标签,否则B

      var hmtl = "<DIV><B> xpto </B></DIV>";
      var remainTag = "B";
      var pattern = String.Format("(</?(?!{0})[^<>]*(?<!{0})>)", remainTag );
      var result =  Regex.Replace(hmtl , pattern, "");
      

      【讨论】:

      • @CasperLeonNielsen 为什么每个人都提到那个关于 OOHH REGEX IS EVIL - DO NOT USE post?说真的……并不是所有东西都必须通过 HTML Agility Pack!
      • 那个帖子太有趣了,让人心疼。和真实的。谢谢你提醒我:)
      【解决方案4】:

      你可以用普通的

      <[(/body|html)\s]*>
      

      在 C# 中:

       var result = Regex.Replace(html, @"<[(/body|html)\s]*>", "");
      
      <html>
      <body>
      < / html> 
      < / body>
      

      【讨论】:

        【解决方案5】:
        html = Regex.Replace(html,@"<*DIV>", String.Empty);
        

        【讨论】:

          猜你喜欢
          相关资源
          最近更新 更多
          热门标签