Editar arquivo xml com Java

9 respostas
G

Olá

Estou fazendo um projeto e queria gerenciar um arquivo xml por Java

Colocarei uma parte do arquivo XML e não ele todo só como exemplo.

<?xml version="1.0" encoding="utf-8"?>
<rotator 
	menuNumber="6" 
	menuColor="green"
	menuAlign="right"
	imageWidth="805"
	imageHeight="300"
	imagePadding="0"
   	autoPlay="yes"
	showPauseButton="yes"
	alwaysShowImageCaption="no"	
	delay="5"
	target="_self"
	>

<content
	title="MEDICINA INTENSIVA"
	img="banner/deploy/thumbnails/mi.jpg"
	icon="banner/deploy/thumbnails/mi.jpg"
	transition="fade"
	link="#">
</content>

Cada atributo desses eu queria editar através de alguma classe Java que eu criar,
Exemplo: no content mudar o title de MEDICINA INTENSIVA para Sistemas de informação alguma coisa assim.

Minha dúvida é pq não consigo colocar codigo java no arquivo xml, no jsp é possível usar o <% %> para codigos em java, mas no xml isso não é possível.

Obrigado

9 Respostas

Y

Gustavo.L

A solução mais apropriada seria utilizar uma das várias APIs existentes para manipulação de XML, para poder ler o arquivo e editar as suas propriedades.

Mas pelo que entendi, você está querendo gerar uma saída XML de uma requisição, correto?!?

Se esse for o caso, você pode criar um página JSP e fazer com que a saída dela seja o seu arquivo XML, sem nenhum problema. Não é a solução mais indicada, mas funciona. Basta ir imprimindo no JSP (out.println()) as tags do seu arquivo XML.

Os browsers irão compreender a saída resultante como XML e a apresentaram como tal.

É mais ou menos isso que você está querendo fazer?!?

Até mais!

Ybadoo
http://www.ybadoo.com.br/

G

É mais ou menos isso, o xml já existe, só quero reescreve-lo sempre que houver uma modificação, só que não sei fazer isso… =/

N

usa o xstream!

ele vai te facilitar muito pq terá uma classe java que vai representar o xml com todos os atributos, quando precisar salvar é só mandar da write do objeto com os valores e pronto…

http://xstream.codehaus.org/javadoc/com/thoughtworks/xstream/XStream.html#toXML(java.lang.Object, java.io.OutputStream)

ai vc passa o fileoutputstream e pronto

G

Já vi um tutorial com essa classe mas ele não gera um xml de acordo com o que eu quero… no exemplo ele gera um xml como este:

<list> <Pessoa> <email>[email removido]</email> <foneComercial class="Telefone"> <ddd>55</ddd> <numero>5555 5555</numero> </foneComercial> <nome>Vinci Pegoretti Amorim</nome> </Pessoa> </list>

O que eu quero deve ficar igual a este

<content title="MEDICINA INTENSIVA" img="banner/deploy/thumbnails/mi.jpg" icon="banner/deploy/thumbnails/mi.jpg" transition="fade" link="#"> </content> <content title="QSMS" img="banner/deploy/qsms.jpg" icon="banner/deploy/qsms.jpg" transition="cube" link="#"> </content>

Dessa forma fica bem diferente e os atributos vem de uma classe específica o que não é o meu caso… =/

N

eu to tentando te ajudar… me ajuda tb lendo a documentação por favor…

http://xstream.codehaus.org/alias-tutorial.html
ele faz um aliasField

G

Obrigado, estou tentando tbm, estou lendo exatamente a parte do Alias…

Ele conseguiu setar Id=5 e Sexo=“Masculino” no exemplo, só que não sei como…

N

nextuser:
eu to tentando te ajudar… me ajuda tb lendo a documentação por favor…

http://xstream.codehaus.org/alias-tutorial.html
ele faz um aliasField

cara liga os pontos le oq escrevi

N

faz na mão… escreve o xml todo com string += que ta bom

N

cara agora se vira!!!!

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

public class Roteador {

	public static void main(String[] args) {
		XStream xs = new XStream();
		xs.processAnnotations(Content.class);
		Content content = new Content();
		content.setTitle("QSMS");
		content.setImg("banner/deploy/qsms.jpg");
		content.setIcon("banner/deploy/qsms.jpg");
		content.setTransition("cube");
		content.setLink("#");

		System.out.println(xs.toXML(content));

	}

	@XStreamAlias("content")
	private static class Content {
		@XStreamAsAttribute
		private String title;
		@XStreamAsAttribute
		private String img;
		@XStreamAsAttribute
		private String icon;
		@XStreamAsAttribute
		private String transition;
		@XStreamAsAttribute
		private String link;

		public String getTitle() {
			return title;
		}

		public void setTitle(String title) {
			this.title = title;
		}

		public String getImg() {
			return img;
		}

		public void setImg(String img) {
			this.img = img;
		}

		public String getIcon() {
			return icon;
		}

		public void setIcon(String icon) {
			this.icon = icon;
		}

		public String getTransition() {
			return transition;
		}

		public void setTransition(String transition) {
			this.transition = transition;
		}

		public String getLink() {
			return link;
		}

		public void setLink(String link) {
			this.link = link;
		}

	}

}
resultado
<content title="QSMS" img="banner/deploy/qsms.jpg" icon="banner/deploy/qsms.jpg" transition="cube" link="#"/>
Criado 7 de abril de 2011
Ultima resposta 11 de abr. de 2011
Respostas 9
Participantes 3