Caros, boa tarde.
Preciso fazer a edição de um arquivo XML. Tal arquivo tem informações para acesso ao banco de dados (hibernate). Estou estudando a API SAX, que foi o que identifiquei como a meneira para realizar a edição.
A dúvida é, para editar o arquivo, realmente é necessário fazer através do SAX (ou DOM), ou é existe uma outra maneira mais simples?
Lembrando que preciso mudar algum_texto para outro_texto, só isso!
Obrigado desde já.
Pessoal, boa tarde.
Alguma dica para a dúvida abaixo?
Obrigado.
Se vc quer algo simples é só ler o arquivo XML como se fosse um arquivo texto e dar replaceAll(“um_texto”,“outro_texto”) e depois salvar o arquivo novamente.
Apesar de eu achar que ler um XML com JDOM é mais simples que isso.
Cara…tenho a solução para vc…
http://www.igorgm.blogspot.com
Dá uma olhada no meu blog…
eu fiz uma postagem relacionada a exatamente isso que vc precisa…
PS: Aproveita e dexa um comentariozim lá…

vlws!
[quote=furutani]…
Apesar de eu achar que ler um XML com JDOM é mais simples que isso.[/quote]
Estou estudando a API, ainda fixando as ideias mas, a princípio, parace bem bacana. Alterei o valor de um elemento e percebi que funciona, mas apenas em tempo de execução. O possível problema é se não conseguir alterar o valor de um elemento e salvá-lo de forma simples, que é o que preciso.
Andei lendo por aqui que como se trata de um arquivo texto, o mesmo precisa ser totalmente reescrito para que determinado valor seja alterado. Vou continuar lendo para tentar encontrar algo mais simples, se é que existe.
Obrigado.
Caros, boa noite.
Estou há algumas horas estudando, ainda, a API JDOM e existem algumas dúvidas, se alguém puder ajudar fico agradecido.
Imaginem uma estrutura:
<TI>
<banco-dados>
<sql name="select">select * from table</sql>
<sql name="delete">delete from table</sql>
<sql name="update">update table set ...</sql>
</banco-dados>
</TI>
Em determinado momento eu tenho:
...
Element TI = document.getRootElement();
List<Element> sql = TI.getChildren();
...
Bom, pela documentação, eu tenho na variável sql uma lista com todos os elementos. A dúvida é:
sql[0] = banco-dados
sql[1] = sql
??
Mais abaixo no código eu tenho:
for(Element el : sql) {
System.out.println("attribute: " + el.getAttributeValue("name")); //nao funciona, porque ainda não estou no elemento sql, onde tem o atributo name
System.out.println("valor: " + el.getValue()); //ta,bém não imprime nada
}
Bom, ‘na primeira passada’ el é banco-dados. Mas como ‘sair’ do elemento banco-dados e ir para o elemento sql, que é o elemento que eu tenho atributos?
Não existe uma espécie de setValue para alterar o valor de determinado elemento?
Obrigado desde já.
Dê uma olhada no xstream, ele permite o mapeamento direto de um ojeto java para xml, e até onde ouvi falar é bem superior a outras soluções
http://xstream.codehaus.org/
A idéia do furutani do replace all tbm pode ser uma boa, dependendo da complexidade da alteração… Um complemento a essa ideia é vc aproveitar o metodo replace all de forma a identificar as tags que serão alteradas seja usando expressões regulares ou uma substring indo do começo ao fim da Tag.
[]s
[quote=furutani]Se vc quer algo simples é só ler o arquivo XML como se fosse um arquivo texto e dar replaceAll(“um_texto”,“outro_texto”) e depois salvar o arquivo novamente.
…[/quote]
Depois de muito ler sobre o JDOM e, concluir que não serve para o que eu preciso (ao menos não encontrei a solução), resolvi partir para a utilização do replaceAll, conforme indicado acima.
Fiz alguns testes iniciais e aparentemente resolveu meu problema.
Agora, como não é possível editar o arquivo e salvar as alterações, apenas escrever do início ou final, fiz a leitura do arquivo [color=red]A[/color] e gravei num arquivo B. Feito isso apaguei o arquivo [color=red]A[/color], e alterei o nome do arquivo B para [color=red]A[/color]. Confuso? Solução meio porca? Não sei, foi o que eu consegui (vale dizer que sou novo nisso).
Se alguém tiver outra idéia para esse delete/rename, fico agradecido.
Obrigado.