HTML 민첩성 팩을 사용하여 HTML 문서의 모든 스크립트 태그를 주석 처리하는 방법

c# comments html-agility-pack

문제

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 - 스크립트 및 스타일 제거?




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.