删除<span>标记,但保留文字?</span>

时间:2014-08-28 14:11:11

标签: c# html-agility-pack

我使用HtmlAgilityPack来解析包含HTML代码的字符串。我尝试做的是删除<span>标记,但保留它们之间的内容。到目前为止,这是我的代码:

var text = @"<div><span>This is some text.</span>More text here.</div>
<div>I have a question.<span>Hi</span></div>";
var doc = new HtmlDocument();
doc.LoadHtml(text);
var nodes = doc.DocumentNode.SelectNodes("//span");
foreach (HtmlNode node in nodes)
{
   node.Remove();
}
String result = doc.DocumentNode.InnerHtml;

问题是,result缺少&#34;这是一些文字。&#34; - <span>标记之间的文字。我怎样才能完成我想要做的事情?我意识到node.Remove实际上删除了整个节点,我只是希望有一种方式可以说remove.Node,但保留内容。

1 个答案:

答案 0 :(得分:3)

在保留孙子孙女的同时从父母那里删除该节点。

foreach (var node in nodes)
{
    node.ParentNode.RemoveChild(node,true);
}