Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: astinx en 22 Julio 2012, 02:02 am



Título: Consulta; TinyMCE parseo de HTML
Publicado por: astinx en 22 Julio 2012, 02:02 am
Hola, estoy implementando un programa que del lado del cliente funciona con flex, flash y muestra textos. El problema consiste en lo siguiente: El html que puede mostrar flex en un text area es un poco raro, por ejemplo, si tengo un tag b anidado dentro de un tag span, se rompe. Por esa razón necesito parsear el html que me devuelve tinyMCE, antes de subirlo a la base de datos, en el lado del servidor, que por cierto el lado del servidor funciona con java + jsp.

Lo anterior lo solucione haciendo algunos parseos en el servlet que subia los textos a la BD, en base al html que me devolvía tinyMCE. Sin embargo ahora se me sumo otro problema, por cierto motivo, no puedo permitir palabras con estilos a medias, por ejemplo:
la palabra tinyMCE  tendría que quedar como tinyMCE

Ahora se me sumo otro parseo mas, y francamente ya no se de donde enchufarme.Opte por hookearme a tinyMCE (dado que en la configuración del tiny hay varias tags que opte por ignorar y ya cuando envio el request al servlet, estas tags me las borra) y conseguir el html del text area ante cada evento onchange, sin embargo, ¿que hago con eso?, si perfecto, conseguí el html del text area y puedo parsearlo en javascript, pero, ¿como lo parseo?, ¿existe alguna librería que corra en java o javascript que me permita moverme de manera comodo por el DOM (SIN QUE NORMALIZE AUTOMATICAMENTE EL HTML)?, ¿ustedes que metodos usarían?.

Encima a todo esto piensen que no necesariamente, al parsear los estilos parciales, tengo que tener en cuenta solo los tags <b> e <i> ya que practicamente cualquier tag cuenta con el atributo style y ahi metido puede tener style="fontWeight: bold" y eso luce como negrita, pese a que no esta dentro de un tag <b>. Por lo tanto tengo que ir iterando sobre el dom, preguntando si tiene el atributo style puesto o si es un tag de estilo (por ejemplo, strong, b, em o italic), si se da "truncar" el estilo de la palabra y a todo esto normalizarlo para que nuestro querido flex lo entienda.

PD: El normalizado de flex a toda furia, consiste en convertir básicamente , cualquier tag en un span y por ejemplo, si era un tag b, en vez de ello, que sea un span con "fontWeigth: bold".

Cualquier pizca de conocimiento que puedan aportar para darme una mano, sera bienvenida, saludos y gracias por leer.