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

人気のある回答

これを参照してください - 非常にきれいなソリューションは、HTMLアジリティパックのLinqクエリのサポートを利用して: htmlagilitypack - スクリプトとスタイルを削除?




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ