Как закомментировать все теги сценария в HTML-документе, используя пакет agility HTML - PullRequest
3 голосов
/ 08 июля 2011

Я хотел бы закомментировать все теги скрипта из HtmlDocument. Таким образом, когда я отрисовываю документ, сценарии не выполняются, но мы все еще можем видеть, что там было. К сожалению, мой текущий подход терпит неудачу:

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

Обратите внимание, что я могу сделать это, используя функции замены в html, но я не думаю, что это было бы так надежно:

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

Ответы [ 2 ]

5 голосов
/ 08 июля 2011

Попробуйте это:

foreach (var scriptTag in htmlDocument.DocumentNode.SelectNodes("//script"))
        {
            var commentedScript = HtmlTextNode.CreateNode(string.Format("<!--{0}-->", scriptTag.OuterHtml));
            scriptTag.ParentNode.ReplaceChild(commentedScript, scriptTag);
        }
0 голосов
/ 25 сентября 2013

См. Этот пост SO - очень чистое решение, использующее поддержку запросов Linq HTML Agility Pack: htmlagilitypack - удалить сценарий и стиль?

...