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.
/***RetiratodasastagsHTMLdeumcódigoHTML,devolvendootextorestante.*@paramhtmlHTMLqueteráastagsretiradas.*@returntextosemtagsHTML.*/publicstaticStringlimpaHTML(Stringhtml){returnConversor.seNulo(html)?"":html.replaceAll("<.*?>"," ").replaceAll("\s+"," ").trim();}/***RetiratodasastagsHTMLdocorpo(tag<body>)deumcódigoHTML,devolvendootextorestante.*Seocorpo(tag<body>)forlocalizadonoHTML,apartedocabeçalho(tag<head>édescartada),*docontrário(tag<body>nãoencontrada),ofuncionamentoécomo"limpaHTML".*@paramhtmlHTMLqueteráastagsretiradas.*@returntextosemtagsHTML.*/publicstaticStringlimpaBodyHTML(Stringhtml){// verifica se alguma coisa foi passadaif(Conversor.seNulo(html)){return"";}// procura o corpo do htmlintp=html.toUpperCase().indexOf("<BODY>");// se achou, limpa a partir do corporeturnlimpaHTML(p>=0?html.substring(p):html);}
khichfy
legal cara!!
funcionou para um dado contexto do meu código…
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).