Supprimer les tags, mais garder le texte?

c# html-agility-pack

Question

J'utilise HtmlAgilityPack pour analyser une chaîne contenant du code HTML. Ce que j'essaie de faire est de supprimer les balises <span> , mais de garder le contenu entre elles. Voici mon code, jusqu'à présent:

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;

Le problème est que le result est manquant "Ceci est du texte". - le texte entre les balises <span> . Comment puis-je accomplir ce que j'essaie de faire? Je réalise que node.Remove supprime en fait tout le nœud. J'espérais simplement qu'il existe un moyen de remove.Node tout en conservant le contenu.

Réponse acceptée

Supprimez ce nœud du parent tout en conservant les petits-enfants.

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi