Como eliminar el HTML de un string sin morir en el intento

06:27PM dic 21, 2005 en categoria Java por Enrique Rodriguez Lasterra

Etiquetas:



Esto es lo que he programado, mejorable sobro todo por el procesado de los acentos y otros caracteres HTML. No me gustaria usar librerias externas, pero si alguien tiene una idea mejor...

protected String removeHTML(String html){
int body = html.indexOf("<BODY");
if (body==-1){
body = html.indexOf("<body");
}
int endBody = html.indexOf("</BODY>");
if (endBody==-1)
endBody = html.indexOf("</body>");
html = html.substring(body,endBody);
html = removeHtmlTag(html);
html = html.replaceAll("\n","")
.replaceAll("\r","")
.replaceAll(" ","")
.replaceAll("& gt;",">")
.replaceAll("€","?")
.replaceAll("& lt;","<");
return html;
}
protected String removeHtmlTag(String texto){
int openTag = texto.indexOf("<");
if (openTag>-1){
int closeTag = texto.indexOf(">",openTag);
String tag = texto.substring(openTag,closeTag);
if (openTag>0){
texto = texto.substring(0,openTag)+texto.substring(closeTag+1);
}else{
texto = texto.substring(closeTag+1);
}
if (" texto +="\n\n";
}else if ("<br/".equals(tag) || "<br".equals(tag)){
texto += "\n";
}
return removeHtmlTag(texto);
}else{
return texto;
}
}

Comentarios:

Buff, Enrique, no puedes mirar algo libre por ahí?. Algunas librerías que han salido por jH tenían buena pinta.

En todo caso, yo diría que el camino sería convertyir el HTML en XHTML y filtrarlo así. Pero es mi opinión, claro, el camino está lleno de piedras también en esa dirección.

Enviado por Al en diciembre 21, 2005 a las 06:40 PM CET #

Creo que en jakarta commons no me acuerdo en que commons hay un removeHTML, por si te vale

Enviado por dahernan en diciembre 21, 2005 a las 10:51 PM CET #

veo esto en <a href="http://www.koders.com/java/fid192062B96FAD17C6E99521598040624BCD46F29E.aspx?s=arraylist">org.roller.util</a> que mejora un poco lo mio.

La verdad es que no necesito nada espectacular, solo quiero el texto de un email sin html. LA mayoria de los programas de correo mandan los emails como html y como texto plano en dos BodyParts, pero yo por si acaso alguno lo envia solo como HTML me gustaria recuperar ese texto.

Por eso no queria nada espectaculor y por supuesto no meter un dependencia con otras librerias.

Gracias.

Enviado por lasterra en diciembre 21, 2005 a las 11:52 PM CET #

Echale un vistazo a HTMLParser de lucene, se utiliza para la demo de indexacion de HTML. Te lo comento porque lo he usado y realmente elimina todas las etiquetas.

Enviado por batch4j en febrero 08, 2006 a las 04:59 PM CET #

Roller tiene un paquete "utility" con varias cosillas interesantes. Entre ellas existe un método "removeHtml" que quizá te apetezca mirar.

Saludos

Enviado por takashy en mayo 15, 2007 a las 11:09 AM CEST #

Enviar un comentario:
  • Sintaxis HTML: Deshabilitado