Tirar tags HTML de texto antes de salvar em banco

Senhores
estou com uma duvida…
È o seguinte:

1 - Atraves de uma url obtive um arquivo XML
2 - Transformei o xml em Objeto (mandei um unmarshal)
3 - tal objeto tem varios campos, entre eles um chamado “noticia”.
4 - dou um get em noticia e mando salvar em banco atraves do hibernate.

o problema é que o texto vai com tags html (td, table, br, etc…) e quando mando um find da noticia, a mesma me aparece toda zuada…
sem falar na acentuação que vai zuada tb…

alguem indica um caminho para retirar essas tags antes de envia-la para o banco ?

valeu!!! :smiley:

Num pedaço de código HTML, para retirar todas as tags HTML, mantendo apenas o texto presente, veja estas funções abaixo.
A base é o médoto replaceAll da classe String.

[code]
/**
* Retira todas as tags HTML de um código HTML, devolvendo o texto restante.
* @param html HTML que terá as tags retiradas.
* @return texto sem tags HTML.
/
public static String limpaHTML(String html) {
return Conversor.seNulo(html) ? “” : html.replaceAll("<.
?>", " “).replaceAll(”\s+", " ").trim();
}

/**
 * Retira todas as tags HTML do corpo (tag <body>) de um código HTML, devolvendo o texto restante.
 * Se o corpo (tag <body>) for localizado no HTML, a parte do cabeçalho (tag <head> é descartada),
 * do contrário (tag <body> não encontrada), o funcionamento é como "limpaHTML".
 * @param html HTML que terá as tags retiradas.
 * @return texto sem tags HTML.
 */
public static String limpaBodyHTML(String html) {
	
	// verifica se alguma coisa foi passada
	if (Conversor.seNulo(html)) {
		return "";
	}
	
	// procura o corpo do html
	int p = html.toUpperCase().indexOf("<BODY>");
	
	// se achou, limpa a partir do corpo
	return limpaHTML(p >= 0 ? html.substring(p) : html);
}[/code]

legal cara!!
funcionou para um dado contexto do meu código…

Mas no meu texto aparece uns caracteres muito estranhos, como :
& aacute
& acirc;
& agrave;
& atilde;
& ccedil;
& eacute;
& ecirc;
& iacute;
& oacute;
& ocirc;
& otilde;
& uacute;
& uuml;

obs: coloquei um espaço entre “&” “uuml” senão o navegador converte para o acento correto… (fiz com todos)

eu tava vendo uma tabela na url :http://www.icmc.usp.br/ensino/material/html/especiais.html
que identifica cada um desses caracteres especiais…

seu código funcionou para tirar as tags classicas do html :slight_smile: valeu!
agora to tentando olhar internamente do JEditorPane para entender como ele consegue converter tudo relacionado a html em texto “normal”

mas ta sinistro… se souber de outra solução eu agradeço :slight_smile:

ate mais!

Se você estiver recebendo um XML, só precisa ler o mesmo. Recomendo para leitura o http://sourceforge.net/projects/jcoltrane/
Espero ter ajudado

Agora que vi que você só quer o campo notícia. Pelo que entendi, seria somente o corpo desse elemento. Se for isso, usa o JColtrane com essa classe:

public class BuscadorNoticia{ @EndElement(tag="noticia") public void obterNoticia(@Body String body){ //insira aqui a string no seu BD } }
Depois só colocar essa classe no construtor do JColtraneXMLHander e mandar parsear usando o parser do SAX (API padrão já presente na biblioteca do sistema).