Geração arquivo XML

3 respostas
J

Olá a todos,
preciso gravar um arquivo XML com o formato a seguir:

<Index_tipo tipo="Binario">
	<indice>1</indice>
	<path>\BCH\XCBR\Loc</path>
	<endereco ip="127.0.0.1" porta="500"></endereco> 
</Index_tipo>

Estou usando o XStream (que é muito simples de usar), o problema está na definição da classe para que ele interprete corretamente os atributos das tags Index_tipo (tipo) e endereco (ip e porta). Alguém sabe como fazer?
Obrigado

3 Respostas

S

Usando anotações/alias.

Posta o Código ai, você ja tem as classes? Ja esta gerando um XML? Ou você esta querendo ler o XML??

J

Preciso gerar um XML (que vai ser lido por outro aplicativo).
Já tenho a classe que vai dar origem ao XML:

public class MapeamentoSDG {
     private String tipo;
	private int indice;
	private String IP;
	private int porta;
	private String path;
 
                // gets e sets
}

E agora to criando a classe pra montar o XML (por enquanto a saída ta na console mesmo, depois vou gravar num arquivo).

public class GeradorMapeamentoSDG {

	public void main(String[] args){

		MapeamentoSDG mapeamentoSDG = new MapeamentoSDG();

		mapeamentoSDG.setTipo("Binario");
		mapeamentoSDG.setIndice_SDG(1);
		mapeamentoSDG.setPath("caminho");
		mapeamentoSDG.setIP("127.0.0.1");
     mapeamentoSDG.setPorta(5002);
		
		XStream xStream = new XStream(new DomDriver());
		xStream.alias("mapeamentoSDG", MapeamentoSDG.class);

		 System.out.println(xStream.toXML(mapeamentoSDG));
	}

A saída está sendo:

<mapeamentoSDG>
  <tipo>Binario</tipo>
  <indice>1</indice>
  <IP>127.0.0.1</IP>
  <porta>5001</porta>
  <path>caminho</path>
</mapeamentoSDG>

O que preciso é que fique como indicado na primeira mensagem.
Valeu

J
Consegui formatar o XML como desejado usando métodos do XStream: Classe Main
//...			
            XStream xStream = new XStream(new DomDriver());

			xStream.alias("dbIndex", Loko.class);

			xStream.useAttributeFor(Loko.class, "tipo");

			xStream.useAttributeFor(Endereco.class, "ip");
			xStream.useAttributeFor(Endereco.class, "porta");
//...
Classe Loko
public class Loko {

	String tipo;
	int indiceSDG;
	String path;
	Endereco enderecoSDG;
	
	public Loko(){
		enderecoSDG = new Endereco();
	}
}
Classe Endereco
public class Endereco {

	String ip;
	int porta;
}
Se alguém precisar de mais alguma informação, tô aí.
Criado 18 de dezembro de 2009
Ultima resposta 21 de dez. de 2009
Respostas 3
Participantes 2