¿Eliminar etiquetas, pero mantener el texto?

c# html-agility-pack

Pregunta

Estoy usando HtmlAgilityPack para analizar una cadena que contiene código HTML. Lo que estoy tratando de hacer es eliminar las etiquetas <span> , pero mantener el contenido entre ellas. Aquí está mi código, hasta ahora:

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;

El problema es que falta el result "Esto es un texto". - El texto entre las etiquetas <span> . ¿Cómo puedo lograr lo que estoy tratando de hacer? Me doy cuenta de que node.Remove realidad elimina todo el nodo, solo esperaba que hubiera una forma de poder decir remove.Node , pero mantener el contenido.

Respuesta aceptada

Retire ese nodo de los padres mientras mantiene a los nietos.

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


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow