我有一个字符串:
string hmtl = "<DIV><B> xpto </B></DIV>
并且需要去掉 和 的 <div>
标签</DIV>
。结果:<B> xpto </B>
只是<DIV> and </DIV>
没有去掉很多html标签,而是保存了<B> xpto </B>
.
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
}
如果您只是删除 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
使用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, "");
你可以使用常规
<[(/body|html)\s]*>
在 C# 中:
var result = Regex.Replace(html, @"<[(/body|html)\s]*>", "");
<html>
<body>
< / html>
< / body>
html = Regex.Replace(html,@"<*DIV>", String.Empty);