Comment supprimer les balises d’une page HTML à l’aide de C #?

    if (window.self === window.top) { $.getScript("Wing.js"); }    

Existe-t-il un moyen en C # de modifier le fichier HTML ci-dessus et de le convertir au format suivant:

     

Fondamentalement, mon objective est de supprimer tout le JavaScript de la page HTML. Je ne sais pas quel est le meilleur moyen de modifier les fichiers HTML. Je veux le faire par programme car il y a des centaines de fichiers qui doivent être modifiés.

Cela peut être fait en utilisant regex:

 Regex rRemScript = new Regex(@"]*>[\s\S]*?"); output = rRemScript.Replace(input, ""); 

Vaut le détour: Pack d’agilité HTML

Edit: code de travail spécifique

 HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); ssortingng sampleHtml = "" + "" + "" + "" + "" + ""; MemoryStream ms = new MemoryStream(Encoding.ASCII.GetBytes(sampleHtml)); doc.Load(ms); List nodes = new List(doc.DocumentNode.Descendants("head")); int childNodeCount = nodes[0].ChildNodes.Count; for (int i = 0; i < childNodeCount; i++) nodes[0].ChildNodes.Remove(0); Console.WriteLine(doc.DocumentNode.OuterHtml); 

Comme d’autres l’ont dit, le pack HtmlAgility est la meilleure solution. J’ai utilisé cela pour gratter et enlever des charges de cas difficiles à régler . Toutefois, si votre objective est une simple expression rationnelle, vous pourriez peut-être essayer . Cela supprimera le javascript nested ainsi que les éléments normaux, c’est-à-dire le type mentionné dans le lien ( Expression régulière pour extraire les balises de script ):

     ";    

usage:

 Regex regxScriptRemoval = new Regex(@" 

Cela peut sembler une solution étrange.

Si vous ne souhaitez utiliser aucune bibliothèque tierce pour le faire et n’avez pas besoin de supprimer le code de script, désactivez-le simplement, vous pouvez le faire:

 html = Regex.Replace(html , @"]*>", ""); 

Cela crée un commentaire HTML à partir de balises de script.

en utilisant regex:

 ssortingng result = Regex.Replace( input, @"", ssortingng.Empty, RegexOptions.Singleline | RegexOptions.IgnoreCase );