4

我有一个字符串:

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

并且需要去掉 和 的 <div>标签</DIV>。结果:<B> xpto </B>


只是<DIV> and </DIV>没有去掉很多html标签,而是保存了<B> xpto </B>.

4

5 回答 5

5

使用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
    }
于 2012-10-30T16:35:53.023 回答
5

如果您只是删除 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
于 2012-10-30T16:42:07.573 回答
2

使用Regex

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

更新

正如您所提到的,通过这段代码,正则表达式删除了所有其他标签B

var hmtl = "<DIV><B> xpto </B></DIV>";
var remainTag = "B";
var pattern = String.Format("(</?(?!{0})[^<>]*(?<!{0})>)", remainTag );
var result =  Regex.Replace(hmtl , pattern, "");
于 2012-10-30T16:51:18.893 回答
1

你可以使用常规

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

在 C# 中:

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

<html>
<body>
< / html> 
< / body>
于 2015-04-13T13:08:29.093 回答
0
html = Regex.Replace(html,@"<*DIV>", String.Empty);
于 2012-10-30T16:35:39.647 回答