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?




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché