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…