Estou criando um arquivo XML a partir de uma lista de objetos usando o XStream , porem quando preciso converter o XML para lista de objetos novamente esta apresentando erro, já procurei em outros tutoriais e a esta tudo aparentemente correto aqui acho que o problema pode estar nas minhas classes, alguém sabe como resolver isso. Seque as minhas classes e a main:
[code]package val;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.thoughtworks.xstream.XStream;
public class CriarXml {
/**
* @param args
*/
public static void main(String[] args) {
int i=2;
XStream xml = new XStream();
Scanner in = new Scanner(System.in);
List lista = new ArrayList(1);
Registro reg = new Registro();
Campo [] campl = new Campo[i];
reg.setNome("Registro 1");
reg.setI(i);
for (int j=0; j<i; j++){
Campo camp = new Campo();
camp.setCampo(j);
System.out.println("");
camp.setConteudo(in.next());
campl[j]=camp;
}
reg.setVetcamp(campl);
lista.add(reg);
String arqXml = xml.toXML(reg);
System.out.println(arqXml);
List nova = (List) xml.fromXML(arqXml);
// vetor pra teste
Registro reg2 = (Registro) nova.get(0);
Campo[] te = reg2.getVetcamp();
for (int j=0; j<i; j++){
Campo teste =(Campo)te[j];
System.out.println(teste.getCampo()+"\n"+
teste.getConteudo());
}
System.exit(0);
}
}[/code]
//// Classe Registo
[code]package val;
//Registro composdto por um vetro de campos
public class Registro {
private int i;
private String nome;
private Campo [] vetcamp = new Campo[i];
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Campo[] getVetcamp() {
return vetcamp;
}
public void setVetcamp(Campo[] vetcamp) {
this.vetcamp = vetcamp;
}
}[/code]
//// Classe Campo
[code]package val;
//Campos de cada registro
public class Campo {
private int campo;
private String denomi;
private String conteudo;
private int tamanho;
private int posicaoIn;
private int posicaoFi;
private String formato;
public int getCampo() {
return campo;
}
public void setCampo(int campo) {
this.campo = campo;
}
public String getDenomi() {
return denomi;
}
public void setDenomi(String denomi) {
this.denomi = denomi;
}
public String getConteudo() {
return conteudo;
}
public void setConteudo(String conteudo) {
this.conteudo = conteudo;
}
public int getTamanho() {
return tamanho;
}
public void setTamanho(int tamanho) {
this.tamanho = tamanho;
}
public int getPosicaoIn() {
return posicaoIn;
}
public void setPosicaoIn(int posicaoIn) {
this.posicaoIn = posicaoIn;
}
public int getPosicaoFi() {
return posicaoFi;
}
public void setPosicaoFi(int posicaoFi) {
this.posicaoFi = posicaoFi;
}
public String getFormato() {
return formato;
}
public void setFormato(String formato) {
this.formato = formato;
}
}[/code]
/// ERRO apresentado
Exception in thread “main” java.lang.IllegalArgumentException: XPP3 pull parser library not present. Specify another driver. For example: new XStream(new DomDriver())
at com.thoughtworks.xstream.io.xml.XppDriver.loadLibrary(XppDriver.java:62)
at com.thoughtworks.xstream.io.xml.XppDriver.createReader(XppDriver.java:43)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:845)
at val.CriarXml.main(CriarXml.java:39)