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> -->");
Prova questo:
foreach (var scriptTag in htmlDocument.DocumentNode.SelectNodes("//script"))
{
var commentedScript = HtmlTextNode.CreateNode(string.Format("<!--{0}-->", scriptTag.OuterHtml));
scriptTag.ParentNode.ReplaceChild(commentedScript, scriptTag);
}
Fare riferimento a questo post SO - soluzione molto pulita che utilizza il supporto query Linq di HTML Agility Pack: htmlagilitypack - rimuovi script e stile?