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("(11)92323424");
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();
}
}
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
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
[quote=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[/quote]
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.
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
[quote=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[/quote]
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