Beem no tutorial do GUJ, que diga se de passagem é muito bom … é usado um metodo de transformação de Objeto para XML muito rapido e pratico, porém estou com duvida no caso de volta … ou seja de XML para Objeto, no exemplo dado ele usam uma String que já fora fabricada no proprio programa e não uma externa … e ele usa lista … alguem sabe me dizer por que ele usa a lista e como faço quando o XML é externo ao projeto “um arquivo”
Abaaixo está o codigo com algumas modificações que estou fazendo “não para reclamar, mas para meu proprio entendimento, não as levem a mal”
package xml;
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.XStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
String contatosEmXML;
// Configurando XStream
XStream xstream = new XStream();
//Criando Lista de Objetos qualquer
List contatos = new ArrayList(1);
// Criando alguns dados
Pessoa P1 = new Pessoa();
P1.setNome("Universidade Federal do ABC");
P1.setEmail("[email removido]");
//Pessoa P2 = new Pessoa();
//P2.setNome("Guilherme Marques");
//P2.setEmail("[email removido]");
Telefone foneDoP1 = new Telefone();
foneDoP1.setDdd(11);
foneDoP1.setNumero("0000-0000");
//Telefone foneDoP2 = new Telefone();
//foneDoP2.setDdd(11);
//foneDoP2.setNumero("2038-0000");
P1.setFoneComercial(foneDoP1);
// P2.setFoneComercial(foneDoP2);
contatos.add(P1);
//contatos.add(P2);
// Passando os dados de Objetos Java para XML
contatosEmXML = xstream.toXML(contatos);
System.out.println("\nContatos em XML:");
System.out.println(contatosEmXML);
JOptionPane.showMessageDialog(null, "Amigo com Objeto em XML\n" + contatosEmXML);
try{
FileWriter xml =new FileWriter("Teste.XML");
PrintWriter escreve=new PrintWriter(xml);
escreve.print(contatosEmXML);
escreve.flush();
escreve.close();
}catch(Exception X){
System.out.print("Erro");
}
// Passando os dados de XML para Objetos Java
//*/
//modo explicado
List amigos = (List) xstream.fromXML(contatosEmXML);// por que da list ????
// List amigos = (List) xstream.fromXML("C:\Users\ufabc\Documents\NetBeansProjects\XML\Teste.XML"); COMO é nesse caso a declaração ?
Pessoa amigo = (Pessoa) amigos.get(0);
Telefone foneDoAmigo = amigo.getFoneComercial();
System.out.println("\nAmigo como Objeto Java:");
System.out.println("Nome: " + amigo.getNome());
System.out.println(
"Fone Comercial: (" + foneDoAmigo.getDdd() + ") " + foneDoAmigo.getNumero());
JOptionPane.showMessageDialog(null, "Amigo como Objeto Java\nNome: " + amigo.getNome() +
"\nTelefone comercial: " + foneDoAmigo.getDdd() + " " + foneDoAmigo.getNumero());
//*/
/*/
Pessoa ufabc=new Pessoa();
//try{
ufabc = (Pessoa) xstream.fromXML(contatosEmXML);
// }catch(Exception a){}
System.out.println(ufabc.getNome());
/*/
}
}