Leitura de XML com Xstream ou qualquer outro

2 respostas
G

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());
       /*/
    }
}

2 Respostas

aleck

Basicamente, o xstream transforma um objeto em xml e um xml em objeto, porem vc deve manter o nome dos campos iguais aos declarados no xml. Caso o xml seja externo vc deve procurar o arquivo com a estrutura do xml e “preparar” seu objeto para receber os valores do xml.

G

Não intendi o que faço para prucurar o arquivo XML externo e le lo

Criado 24 de setembro de 2008
Ultima resposta 24 de set. de 2008
Respostas 2
Participantes 2