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 ?
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]
seu código funcionou para tirar as tags classicas do html 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
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).