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);
}
이 SO 포스트 - HTML 애자 팩의 Linq 쿼리 지원을 사용하는 매우 깨끗한 솔루션을 참조하십시오 : htmlagilitypack - 스크립트 및 스타일 제거?