web-dev-qa-db-fra.com

C # HTMLDecode sans System.Web possible?

Je sais qu'il existe différentes méthodes dans l'espace de noms System.Web pour décoder les entités html (telles que "% 20" pour l'espace). Je construis une application Winforms cependant, mais doit gérer des chaînes encodées en html. Fondamentalement, j'ai le fichier XML de la bibliothèque iTunes et je dois décoder les URL dedans pour vérifier les fichiers.

Est-ce possible sans l'espace de noms System.Web?

47
miccet

Les développeurs qui ont besoin d'utiliser System.Web.HttpUtility dans leurs applications clientes et ont dû référencer System.Web.dll et donc cibler NET4 complet (System.Web.dll est en version complète), peuvent désormais cibler le profil client NET4 en utilisant le nouveau Classe System.Net.WebUtility qui se trouve dans System.dll (System.dll se trouve dans le profil client NET4). System.Net.WebUtility inclut HtmlEncode et HtmlDecode. Le codage d'URL peut être effectué à l'aide de la classe System.Uri (également dans System.dll).

De http://blogs.msdn.com/b/jgoldb/archive/2010/04/12/what-s-new-in-net-framework-4-client-profile-rtm.aspx =

94
bizon

Vous pouvez utiliser System.Net.WebUtility.HtmlDecode :

Convertit une chaîne qui a été encodée en HTML pour la transmission HTTP en une chaîne décodée.

26
kirankumar

Ce n'est pas parce que vous écrivez une application Windows Forms que vous utilisez System.Web. Ajoutez simplement une référence à System.Web.dll.

24
Jon Skeet

Voir cet article si vous êtes toujours curieux de savoir comment procéder sans System.Web. Il offre une solution pour le décodage URI (qui est vraiment ce que vous décodez, pas des entités HTML qui sont quelque chose comme "& emdash;")

7
Steve Eisner

Pour utiliser les méthodes qui se trouvent dans le framework .NET, vous devez utiliser l'espace de noms System.Web pour obtenir la méthode HtmlDecode.

Oui, vous pourriez écrire votre propre méthode pour le faire, mais cela n'aurait pas beaucoup de sens.

Ajoutez simplement la référence à system.web.

0
Mitchel Sellers

peut-être que cela peut aider dans les winforms:

System.Uri.EscapeUriString(plainText);
0
Simko