如何从 html 中删除特定标签 [重复]
Posted
技术标签:
【中文标题】如何从 html 中删除特定标签 [重复]【英文标题】:how can I remove with specific tags from html [duplicate] 【发布时间】:2012-12-06 23:22:48 【问题描述】:可能重复:How to use html Agility pack
我有下面的html代码:
<div><span class="help">This is text.</span>Hello, this is text.</div>
<div>I have a question.<span class="help">Hi</span></div>
现在,我想使用 C# 删除 <span class="help"></span>
之间的文本。所以,我只想离开
<div>Hello, this is text.</div>
<div>I have a question.</div>
有人知道吗?
【问题讨论】:
【参考方案1】:获取包含 runat="server" 的元素,以便可以从代码隐藏中访问它们,然后在合适时尝试通过其 id 名称获取元素并执行以下任一操作 element.innerHTML = "";或 element.innerText = "";
【讨论】:
很抱歉,但你如何 -1 评论?这就是你想做的事 感谢您的评论。但正如你所见,我的意思是处理 html 字符串。 那么你应该在描述中这么说。不要指望每个人都只是猜测你想要什么。 对不起兄弟~都是我的错。请不要生我的气。 Drakoumel,你有一种非常激进和防守的倾向。建议进行实际交流。【参考方案2】:你可以使用正则表达式
string val = @"<div><span class=""help"">This is text.</span>Hello, this is text.</div><div>I have a question.<span class=""help"">Hi</span></div>";
Regex reg = new Regex("<span .+?</span>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
string ret = reg.Replace(val, "");
Debug.WriteLine(ret);
【讨论】:
-1:不要使用正则表达式来解析 html 为什么?我认为它比解析 html 更快。 ***.com/questions/1732348/…【参考方案3】:我有想法使用Html Agility Pack
来解析html。
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html); // this is your string
var divs = doc.DocumentNode.Elements("div")
.Select(div => string.Format("<div>0</div>", div.LastChild.InnerText));
【讨论】:
【参考方案4】:您应该使用Html Agility Pack 来处理html。
string text = @"<div><span class=""help"">This is text.</span>Hello, this is text. </div>
<div>I have a question.<span class=""help"">Hi</span></div>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(text);
var nodes = doc.DocumentNode.SelectNodes("//span[@class='help']");
foreach( HtmlNode node in nodes)
node.Remove();
String result = doc.DocumentNode.InnerHtml;
【讨论】:
非常感谢。效果很好。以上是关于如何从 html 中删除特定标签 [重复]的主要内容,如果未能解决你的问题,请参考以下文章