Html Agility Pack - Supprimer un élément, mais pas innerHtml

c# html html-agility-pack

Question

Je peux facilement supprimer l'élément simplement par note.Remove ()

HtmlDocument html = new HtmlDocument();

html.Load(Server.MapPath(@"~\Site\themes\default\index.cshtml"));

foreach (var item in html.DocumentNode.SelectNodes("//removeMe"))
{
    item.Remove();
}

Mais cela supprime également le innerHtml. Que se passe-t-il si je souhaite uniquement supprimer la balise et conserver le code innerHtml?

Exemple:

HtmlDocument html = new HtmlDocument();

html.Load(Server.MapPath(@"~\Site\themes\default\index.cshtml"));

foreach (var item in html.DocumentNode.SelectNodes("//removeMe"))
{
    item.Remove();
}

Toute aide serait appréciée :)

Réponse acceptée

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var node = doc.DocumentNode.SelectSingleNode("//removeme");
node.ParentNode.RemoveChild(node, true);

Réponse populaire

Il existe un problème d'implémentation KeepGrandChildren dans bool pour les personnes qui pourraient avoir du texte avec l'élément à supprimer. Si la balise removeme contenait du texte, celui-ci sera également supprimé. Par exemple, <removeme>text<p>more text</p></removeme> deviendra <p>more text</p>

Essaye ça:

private static void RemoveElementKeepText(HtmlNode node)
    {
        //node.ParentNode.RemoveChild(node, true);
        HtmlNode parent = node.ParentNode;
        HtmlNode prev = node.PreviousSibling;
        HtmlNode next = node.NextSibling;

        foreach (HtmlNode child in node.ChildNodes)
        {
            if (prev != null)
                parent.InsertAfter(child, prev);
            else if (next != null)
                parent.InsertBefore(child, next);
            else
                parent.AppendChild(child);

        }
        node.Remove();
    }



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