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.
Supprimez ce nœud du parent tout en conservant les petits-enfants.
foreach (var node in nodes)
{
node.ParentNode.RemoveChild(node,true);
}