我想注释掉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上的replace函数来做到这一点,但我认为它不会那么强大:

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

最佳答案

尝试这个:

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

关于c# - 如何使用HTML敏捷包注释掉html文档中的所有脚本标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6627126/

10-08 22:46