Come commentare tutti i tag di script in un documento html utilizzando il pacchetto agilità HTML

c# comments html-agility-pack

Domanda

Vorrei commentare tutti i tag di script da un HtmlDocument. In questo modo, quando eseguo il rendering del documento, gli script non vengono eseguiti, tuttavia possiamo ancora vedere cosa c'era. Sfortunatamente, il mio approccio attuale sta fallendo:

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

Nota che posso farlo usando le funzioni di sostituzione su html, ma non penso che sarebbe altrettanto robusto:

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

Risposta accettata

Prova questo:

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

Risposta popolare

Fare riferimento a questo post SO - soluzione molto pulita che utilizza il supporto query Linq di HTML Agility Pack: htmlagilitypack - rimuovi script e stile?



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow