2011-12-01 23 views
16

Estoy buscando alguna función que decodifique una buena cantidad de entidades HTML.Decodificación de todas las entidades HTML

La razón es que estoy trabajando en algo de código para tomar el contenido HTML y convertirlo en texto plano, el problema que tengo es una gran cantidad de entidades no hacer se convierten utilizando HttpUtility.HtmlDecode.

Algunos ejemplos de entidades que me preocupan son & nbsp ;, & amp ;, & copy ;.

Esto es para .net 3.5.

+0

que me pasa a .NET 3.5 y se utiliza 'Console.WriteLine (HttpUtility.HtmlDecode (" , &, ©"));' y funcionó bien para mí. No puedo entender por qué estarías teniendo problemas. ¿Tienes una codificación de cadena extraña o algo así? –

Respuesta

19

Entonces tal vez se necesita el HttpUtility. HtmlDecode ?. Debería funcionar, solo necesita agregar una referencia a System.Web. Al menos esta era la forma en .Net Framework < 4.

Por ejemplo el siguiente código:

MessageBox.Show(HttpUtility.HtmlDecode("&amp;&copy;")); 

trabajadas y la salida era como se esperaba (ampersand y símbolo de copyright). ¿Está seguro de que el problema está dentro de HtmlDecode y no es algo más?

ACTUALIZACIÓN: Otra clase capaz de hacer el trabajo, WebUtility (de nuevo el método HtmlDecode) vino en las versiones más nuevas de .Net. Sin embargo, parece haber algunos problemas con eso. Consulte la pregunta HttpUtility vs. WebUtility.

+0

Tiene razón, era como estaba usando el resultado, si lo pongo en una etiqueta asp: convertirá el carácter copywrite en ©. – Matthew

+0

Ya veo. Eso es bastante útil saber :). –

20

Uso WebUtility.HtmlDecode incluido en .Net 4

Por ejemplo, si me quedo en una aplicación de consola:

Console.WriteLine(WebUtility.HtmlDecode("&nbsp;, &amp;, &copy;")); 

consigo , &, c

+1

Probablemente debería haber dicho que esto es para .net 3.5. Sin embargo, te hice un I + 1. Gracias de todos modos. – Matthew

+0

¿Cuál es la diferencia entre WebUtility y el método 'HtmlDecode' de HttpUtility? – crush

+0

Aquí hay una respuesta: http://stackoverflow.com/questions/17352981/webutility-htmldecode-vs-httputilty-htmldecode En resumen: WebUtility viene con WinRT, es más nuevo, mientras que HttpUtility es el anterior (se usa todo sobre el lugar, así que espero que se quede). También creo que WebUtility está en System.dll (System.Net), lo que lo hace un poco más accesible para WinApps (no tienes que depender de System.Web) si no recuerdo mal. –

Cuestiones relacionadas