删除标签,但保留文字?

问题描述:

我使用HtmlAgilityPack来解析包含HTML代码的字符串。我试图做的是删除<span>标签,但保留它们之间的内容。这里是我的代码,到目前为止:删除<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缺少“这是一些文本。” - <span>标签之间的文本。我怎样才能完成我想要做的事情?我意识到,node.Remove实际上删除整个节点,我只是希望有一种方式,我可以说remove.Node,但保留内容。

在保留孙子的同时,从父项中移除该节点。

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

太棒了!定时器启动后,我会立即给出答案。 – Kevin 2014-08-28 14:15:42