我想注释掉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/