2009-04-02 9 views
44

So che esistono diversi metodi nello spazio dei nomi System.Web per la decodifica delle entità html (come "% 20" per lo spazio). Tuttavia sto costruendo un'applicazione Winforms, ma devo occuparmi di stringhe codificate in html. Fondamentalmente ho il file XML della libreria di iTunes e ho bisogno di decodificare gli URL in là per controllare i file.C# HTMLDecode senza System.Web possibile?

Ciò è possibile senza lo spazio dei nomi System.Web?

+0

Perché si non utilizzare lo spazio dei nomi System.Web? – AnthonyWJones

+4

Questo è rilevante se si desidera utilizzare solo il sottoinsieme client del framework, +1. –

+0

@Cookey vedi la risposta di bizon, sicuramente la migliore. – BrainSlugs83

risposta

91

Gli sviluppatori che hanno bisogno di usare System.Web.HttpUtility nelle loro app client e ha dovuto fare riferimento a System.Web.dll e quindi target NET4 completo (System.Web.dll è in Full), ora può indirizzare il profilo client NET4 utilizzando il nuovo System.Net .WebUtility class che è in System.dll (System.dll è nel profilo client NET4). System.Net.WebUtility include HtmlEncode e HtmlDecode. La codifica di URL può essere eseguita utilizzando la classe System.Uri (anche in System.dll).

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

+4

Questo è il migliore risposta. Grazie biz! – BrainSlugs83

+0

Ottimo! Grazie!!! – Vlad

+0

grazie! cercavo questo – michaelalm

25

Proprio perché stai scrivendo un'app di Windows Form non ti impedisce di utilizzare System.Web. Basta aggiungere un riferimento a System.Web.dll.

+0

Sono già intervenuto. Ho dimenticato il riferimento, pensavo che un "uso" avrebbe funzionato. Grazie! – miccet

+13

Il problema è che non è possibile utilizzare il profilo client .NET 3.5 con l'app .NET in modo che gli utenti di XP possano evitare il download di 150mb e andare per il 28mb più piccolo. Meglio evitare lo spazio dei nomi System.Web se è possibile. –

+2

In secondo luogo, è stupido che un sottoinsieme di questi metodi non possa essere fornito in un assembly separato disponibile per l'installazione del profilo client. Mi trovo abbastanza spesso a doverli utilizzare in semplici app client. – Almund

1

Per utilizzare i metodi presenti nel framework .NET è necessario utilizzare lo spazio dei nomi System.Web per ottenere il metodo HtmlDecode.

Sì, potresti scrivere il tuo metodo per farlo, ma non avrebbe molto senso.

Basta aggiungere il riferimento a system.web.

7

Vedere this article se si è ancora curiosi su come farlo senza System.Web. Esso offre una soluzione per la decodifica URI (che in realtà è quello che stai decodifica, non entità HTML che sono qualcosa come "& emdash;")

+0

Grazie Steve, questo era esattamente quello che stavo cercando +1 – si618

-2

È possibile utilizzare HttpUtility.UrlDecode o HttpUtility.HtmlDecode

+5

Poiché la domanda era come fare questo Senza l'assembly System.Web temo che questo non sia molto d'aiuto .. – Almund

0

mybe può aiutare in WinForms:

System.Uri.EscapeUriString(plainText); 
+0

Ti dispiace espandere il tuo codice invece di pubblicare un solo rivestimento? –

Problemi correlati