2009-04-02 14 views
44

Sé que hay diferentes métodos en el espacio de nombres System.Web para decodificar entidades html (como "% 20" para el espacio). Sin embargo, estoy construyendo una aplicación Winforms, pero necesito tratar con cadenas codificadas en html. Básicamente, tengo el archivo XML de la Biblioteca de iTunes y necesito decodificar las URL para verificar los archivos.C# HTMLDecode sin System.Web posible?

¿Esto es posible sin el espacio de nombres System.Web?

+0

¿Por qué no utilizar el espacio de nombres System.Web? – AnthonyWJones

+4

Esto es relevante si desea utilizar el subconjunto solo cliente del marco, +1. –

+0

@Cookey vea la respuesta de bizon, definitivamente la mejor. – BrainSlugs83

Respuesta

91

Los desarrolladores que necesitan utilizar System.Web.HttpUtility en sus aplicaciones de cliente y tuvo que hacer referencia a System.Web.dll y, por lo tanto, a NET4 completo (System.Web.dll está completo), ahora puede segmentar el perfil del cliente NET4 mediante System.Net nuevo Clase .WebUtility que está en System.dll (System.dll está en NET4 Client Profile). System.Net.WebUtility incluye HtmlEncode y HtmlDecode. La codificación de URL se puede lograr utilizando la clase System.Uri (también en System.dll).

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

+4

Este es el la mejor respuesta. Gracias bizon! – BrainSlugs83

+0

¡Genial! ¡¡¡Gracias!!! – Vlad

+0

¡gracias! estado buscando esto – michaelalm

25

El hecho de que esté escribiendo una aplicación de Windows Forms no le impide usar System.Web. Solo agregue una referencia al System.Web.dll.

+0

He tropezado con esto antes. Olvidé la referencia, pensé que sería un "uso". ¡Gracias! – miccet

+13

El problema es que no puede usar el perfil de Cliente .NET 3.5 con su aplicación .NET para que sus usuarios de XP puedan evitar la descarga de 150 MB y optar por la más pequeña de 28mb. Lo mejor es evitar el espacio de nombres System.Web si puede. –

+2

En segundo lugar, es absurdo que un subconjunto de estos métodos no pueda proporcionarse en un ensamblaje separado disponible para la instalación del perfil del cliente. A menudo me encuentro en necesidad de ellos en aplicaciones simples para clientes. – Almund

1

Para utilizar los métodos que están en .NET Framework, debe usar el espacio de nombres System.Web para obtener el método HtmlDecode.

Sí, podría escribir su propio método para hacerlo, pero eso no tendría mucho sentido.

Simplemente agregue la referencia a system.web.

7

Consulte this article si todavía tiene curiosidad por saber cómo hacerlo sin System.Web. Ofrece una solución para la decodificación URI (que es realmente lo que estás decodificación, no entidades HTML que son algo así como "& emdash;")

+0

Gracias Steve, esto era exactamente lo que estaba buscando +1 – si618

-2

Puede utilizar HttpUtility.UrlDecode o HttpUtility.HtmlDecode

+5

Dado que la pregunta era cómo hacer esto Sin el ensamblado System.Web, me temo que esto no es de mucha ayuda. – Almund

0

mybe puede ayudar en winforms:

System.Uri.EscapeUriString(plainText); 
+0

¿Te importa expandir tu código en lugar de publicar un trazador de líneas? –

Cuestiones relacionadas