删除Html标签,同时保留内部文本和
标签

问题描述:

我试图从HTML内容中删除跨度,字体,b,s,罢工(和其他内部元素)标签,同时保留其中的文本和<br>标签。为此,我使用HTML敏捷包。我设法保留文字,但<br>标签仍然是一个问题。有任何想法吗?删除Html标签,同时保留内部文本和<br>标签

下面是代码:

private void removeTagsButPreserveText2(HtmlNode nodeToRemove) 
    { 
     var parent = nodeToRemove.ParentNode; 
     var prev = nodeToRemove.PreviousSibling; 

     if (prev != null) 
     { 
      var child = nodeToRemove.SelectNodes("./br"); 

      if (child == null) 
      { 
       parent.InsertAfter(documentToSearch.CreateTextNode(nodeToRemove.InnerText + " "), prev); 

       nodeToRemove.Remove(); 
      } 
      else 
      { 
       foreach (var item in child) 
       { 
        var parent2 = item.PreviousSibling; 

        if (parent2 != null) 
        { 
         if (parent2.InnerText.HasDate()) 
         { 
          var newNode = parent.InsertAfter(documentToSearch.CreateTextNode(parent2.InnerText), prev); 
          parent.InsertAfter(documentToSearch.CreateElement("br"), newNode); 
          nodeToRemove.Remove(); 
         } 
        } 
       } 
      } 
     } 
    } 

例如,输入将是:

<p><font face="Arial" size="2"><strike> 
     <span style="font-weight: 400"><font color="#000000">Paper 
     Submission (Full 
     Paper) Before 
     <span lang="en-us">September</span> 20, 201<span lang="en-us">2</span></font></span></strike><font color="#FF0000"><br> 
     Notification of 
     Acceptance On <span lang="en-us">October 5</span>, 201<span lang="en-us">2</span><br> 
     Authors' 
     Registration Before 
     <span lang="en-us">October 20</span>, 201<span lang="en-us">2</span><br> 
     ICNIT 2012 Conference 
     Dates November 
     17 - 18, 2012</font></font></p> 

和输出应该是这样的:

<p>Paper Submission (Full Paper) Before September 20, 2012<br> 
     Notification of Acceptance On October 5, 2012<br> 
     Authors' Registration Before October 20, 2012<br> 
     ICNIT 2012 Conference 
     Dates November 
     17 - 18, 2012</p> 
+2

无代码=不建议... –

+0

出于好奇,是什么这样做背后的目标是什么? – MikeSmithDev

+0

您可以在'清理'之前将\
替换为\ t(让jsut说),然后将其转换回
? –

你尝试使用正则表达式为什么?我的意思是,把所有东西都变成“<xxxx asdasd>”或类似的东西,并替换为“”只维护<BR>

+2

这是一条评论,而不是答案 – MikeSmithDev

+0

我解析了很多HTML。正则表达式会让它更慢。 –

+0

Medeiros,欢迎来到计算器。看到这个经典的参考http://*.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags关于解析HTML与正则表达式 –

对于这种HTML操作,有一个很棒的库叫做HTML Agility Pack

这里有一个类似的问题,这将指向正确的方向:Html Agility Pack - Remove element, but not innerHtml