Importar arquivo xml com XStream para uma matriz

2 respostas
lgpeletti

Boa tarde pessoal, pelo assunto do tópico, já devem imaginar que estou com problemas usando o XStream! hehe!
Seguinte, sou aluno de 2o semestre de ADS e meu professor de orientada a objetos pediu para usarmos o XStream para exportar alguns dados de uma matriz “origem” para xml e depois importarmos estes dados do arquivo gerado, de volta para uma nova matriz “destino”.
Lendo a documentação e seguindo dicas aqui do fórum, consegui fazer a parte da exportação para o arquivo xml, até que sem maiores problemas, mas não consigo de jeito algum fazer este xml voltar a ser uma matriz. Seguem os códigos das minhas classes para vocês analisarem…

Classe RANKING

import java.util.List;

public class Ranking {
	
	  static String [][]origem = new String[10][2]; //matriz original com os dados
	  
	  static String [][]destino = new String[10][2]; // matriz onde os dados do xml devem ser inseridos
	  
	  private String nome;
	  private String vitorias;
	  private List<Ranking> posicoes;

	  static void montar(){ //Inicia o ranking com valores
			for(int l=0;l<10;l++){ 
				for(int c=0;c<2;c++){ 
					origem[l][c]="null"; // inicio toda a matriz com "null"
				}
			}
			
			origem[0][0]="xxx"; //entre com alguns valores manuais para popular a matriz origem
			origem[1][0]="yyy";
			origem[2][0]="zzz";
			//origem[3][0]="tst";
			
			origem[0][1]="6";
			origem[1][1]="4";
			origem[2][1]="1";
			//origem[3][1]="0";
			
	  }

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getVitorias() {
		return vitorias;
	}

	public void setVitorias(String vitorias) {
		this.vitorias = vitorias;
	}

	public List<Ranking> getPosicoes() {
		return posicoes;
	}

	public void setPosicoes(List<Ranking> posicoes) {
		this.posicoes = posicoes;
	}
	
}

Classe RODAR

import java.io.File;
import com.thoughtworks.xstream.XStream;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;


public class Rodar {

	static void gravaLista() {
			        List<Ranking> posicoes = new ArrayList<Ranking>();
			        
				    if (Ranking.origem[0][0]!="null"){
			        	Ranking p1 = new Ranking();
				        p1.setNome(Ranking.origem[0][0]);
				        p1.setVitorias(Ranking.origem[0][1]);
				        posicoes.add(p1);
				    }
			            
				    if (Ranking.origem[1][0]!="null"){
			        	Ranking p2 = new Ranking();
			        	p2.setNome(Ranking.origem[1][0]);
			        	p2.setVitorias(Ranking.origem[1][1]);
				        posicoes.add(p2);
				    }
				    
				    if (Ranking.origem[2][0]!="null"){
			        	Ranking p3 = new Ranking();
			        	p3.setNome(Ranking.origem[2][0]);
			        	p3.setVitorias(Ranking.origem[2][1]);
				        posicoes.add(p3);
				    }
				    
				    if (Ranking.origem[3][0]!="null"){
			        	Ranking p4 = new Ranking();
			        	p4.setNome(Ranking.origem[3][0]);
			        	p4.setVitorias(Ranking.origem[3][1]);
				        posicoes.add(p4);
				    }
				    
			        XStream xStream = new XStream();
			        xStream.alias("posicoes", List.class);
			        			        			 
			        File arquivo = new File("C:\\Temp\\"+"xmlTeste.xml");
			        FileOutputStream gravar;
			        try {
			            gravar = new FileOutputStream(arquivo);
			            gravar.write(xStream.toXML(posicoes).getBytes());
			            gravar.close();
			        } catch (IOException ex) {
			            ex.printStackTrace();
			        }
	}

	static void importarLista() { //preciso importar os dados do meu xmlTeste.xml do método anterior para a matriz destino, na classe Ranking.
        
	}
	
}

Por último, segue o código gerado pelo método gravaLista() dentro do arquivo xmlTeste.xml

<posicoes>
    <ranking>
      <nome>xxx</nome>
      <vitorias>6</vitorias>
    </ranking>
    <ranking>
      <nome>yyy</nome>
      <vitorias>4</vitorias>
   </ranking>
    <ranking>
      <nome>zzz</nome>
      <vitorias>1</vitorias>
    </ranking>
</posicoes>

A grande questão é, como deve ficar o meu método importarLista() para que isso funcione como deveria?

Desde já agradeço por toda a ajuda…

2 Respostas

E

Você sabe converter um ArrayList para uma matriz?

lgpeletti

Entanglement, não sei usar muito bem o arraylist, mas posso pesquisar no google e mesmo aqui no fórum, como fazer as conversões!
Achei um ótimo tópico aqui no fórum com os tratamentos que podem ser dados e como desmembrar um arraylist, para tirar os dados q eu desejo e depois montar minha matriz…
Agora fico então com o problema de como importar o arquivo xml para um arraylist?

Obrigado

Criado 3 de dezembro de 2012
Ultima resposta 3 de dez. de 2012
Respostas 2
Participantes 2