Duvida com xStream

6 respostas
M

Fala pessoal;

Estou trabalhando com a biblioteca Xtream para manipulação de arquivos XML.

Eu dei uma boa pesquisa e entendi mais ou menos como funciona seus métodos.

meus registros estão estruturados em dois arraylists: o primeiro com o nome da chave e o segundo com o valor, por exemplo:

Posição 0 do primeiro arrayList tem a String: Nome
posição 0 do segundo arrayList tem a String: Marcelo
posição 1 do primeiro arrayList tem a String: Telefone
posição 1 do segundoarrayList tem a String: (11)9149443

E assim por diante

entenderam?

Não estou conseguindo tranfomar isso em XML, minha saida atual é:

Nome
Telefone
Escola
Nota

segue abaixo o codigo:

public void write() throws IOException
	{
		
		ArrayList<String> primeiroTeste = new ArrayList<String>();
		ArrayList<String> segundoTeste = new ArrayList<String>();
		

		
		
		primeiroTeste.add("Nome");
		primeiroTeste.add("Telefone");
		primeiroTeste.add("Escola");
		primeiroTeste.add("Nota");
		
		
		segundoTeste.add("Marcelo");
		segundoTeste.add("([telefone removido]");
		segundoTeste.add("USP");
		segundoTeste.add("9,2");

		XStream xStream = new XStream();
		xStream.alias("registros", LinkedList.class);
		
		for(int i = 0; i < segundoTeste.size(); i++){
			xStream.alias(segundoTeste.get(i), String.class);
		}
		
		File arquivo = new File("teste.xml");
		@SuppressWarnings("resource")
		FileOutputStream gravar = new FileOutputStream(arquivo);
		gravar.write(xStream.toXML(segundoTeste).getBytes());
		gravar.close();
		
	}

}

6 Respostas

W

Soh uma pergunta: Porque vc nao cria uma classe para Aluno, ao invez de manter duas listas, fica muito complicado.

public class Aluno {
   String Nome;
   String Telefone;
   String Escola;
   Double Nota;
}

Ai vc pode ter uma lista de alunos:

List<Aluno> alunos = new ArrayList<Aluno>();

Fica bem mais facil para vc serializar e deserializar os dados.
Se vc olhar o primeiro exemplo: http://xstream.codehaus.org/converter-tutorial.html
//Daniel

romarcio

Da uma lida nesse tutorial Manipulando Arquivo XML ? Parte III: XStream

M

windsofhell,

Sim, eu sei que ficaria muito mais facil.Mas o problema (que eu acabei nao comentando) é que eu posso receber estes dois arraylist a partir de qualquer estrutura.

Por exemplo, em vez de nome telefone eu poderia receber apelido ou email, entende? meu registro não é fixo, o que vier nestes arraylists eu tenho q me virar e trabalhar com eles

romarcio

MarceloRocks:
windsofhell,

Sim, eu sei que ficaria muito mais facil.Mas o problema (que eu acabei nao comentando) é que eu posso receber estes dois arraylist a partir de qualquer estrutura.

Por exemplo, em vez de nome telefone eu poderia receber apelido ou email, entende? meu registro não é fixo, o que vier nestes arraylists eu tenho q me virar e trabalhar com eles

Mas tenho quase certeza que dessa forma o XStream não trabalha. Ele trabalha com classes e associa os atributos das classes aos elementos do XML. Da forma que você pretende fazer, ele não terá como fazer essa associação.

M

Pois é cara, eu imaginei isto tambem…

Andei dando uma pesquisa, quase todas as API de XML tem esta limitação tambem.

Voce conhece alguma que não tenha?

Abraço

romarcio

MarceloRocks:
Pois é cara, eu imaginei isto tambem…

Andei dando uma pesquisa, quase todas as API de XML tem esta limitação tambem.

Voce conhece alguma que não tenha?

Abraço

Sim conheço, vai te dar um pouco mais de trabalho, mas acho que vai servir. Você tem 2 opções, usar Manipulando Arquivo XML ? Parte II: JDOM ou Manipulando Arquivo XML ? Parte I: API Nativa

Criado 16 de novembro de 2012
Ultima resposta 16 de nov. de 2012
Respostas 6
Participantes 3