Cómo comentar todas las etiquetas de script en un documento html usando el paquete de agilidad HTML

c# comments html-agility-pack

Pregunta

Me gustaría comentar todas las etiquetas de script de un HtmlDocument. De esta manera, cuando renderizo el documento, los scripts no se ejecutan, pero aún podemos ver lo que había allí. Desafortunadamente, mi enfoque actual está fallando:

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();
            }

Tenga en cuenta que puedo hacer esto usando las funciones de reemplazo en el html, pero no creo que sea tan robusto:

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

Respuesta aceptada

Prueba esto:

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

Respuesta popular

Consulte esta solución SO muy limpia que utiliza el soporte de consulta Linq del paquete de agilidad HTML: htmlagilitypack : ¿elimina el script y el estilo?



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué