Comment commenter toutes les balises de script dans un document HTML à l'aide du pack d'agilité HTML

c# comments html-agility-pack

Question

Je voudrais commenter toutes les balises de script d'un HtmlDocument. De cette façon, lorsque je rends le document, les scripts ne sont pas exécutés, mais nous pouvons toujours voir ce qui était là. Malheureusement, mon approche actuelle échoue:

foreach (var scriptTag in htmlDocument.DocumentNode.SelectNodes("//script"))
            {
                var commentedScript = new HtmlNode(HtmlNodeType.Comment, htmlDocument, 0) { InnerHtml = scriptTag.ToString() };
                scriptTag.ParentNode.AppendChild(commentedScript);
                scriptTag.Remove();
            }

Notez que je peux le faire en utilisant des fonctions de remplacement sur le code HTML, mais je ne pense pas que ce serait aussi robuste:

domHtml = domHtml.Replace("<script", "<!-- <script");
domHtml = domHtml.Replace("</script>", "</script> -->");

Réponse acceptée

Essaye ça:

foreach (var scriptTag in htmlDocument.DocumentNode.SelectNodes("//script"))
        {
            var commentedScript = HtmlTextNode.CreateNode(string.Format("<!--{0}-->", scriptTag.OuterHtml));
            scriptTag.ParentNode.ReplaceChild(commentedScript, scriptTag);
        }

Réponse populaire

Reportez-vous à ce message SO - solution très propre utilisant le support de requête Linq du pack HTML Agility: htmlagilitypack - supprimer le script et le style?



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