Leitura de arquivo .xml

15 respostas
R

Bom dia pessoal…

Bom, necessito ler um arquivo .xml gerado por outro aplicativo… gostaria de saber qual a melhor ferramenta para usuar XStream ou JDon… e se alguem puder passar um trecho de código que faça essa leitura tambem… estou ficando doido aqui… rsrsrsrs

abraços…

15 Respostas

Marcelo_FS

Até onde vão meus conhecimentos, o XStream só é bom se você tem independência pra alterar o XML que vem ou os objetos do seu sistema… pessoalmente, acho a api DOM mais flexível.

Cerjr

Olá rafaels,
Eu uso o XStream para criar objetos a partir do xml,
porém eu possuo um bean que tem a mesma estrutura do xml e
fazer isso é bem facil.

exemplo

XStream xstream = new XStream();
List<Bairros> bairros = (List<Bairros>) stream.fromXML(new FileReader(new File("localDoXml")));

espero ter ajudado…
até+

R

Pessoal não estou conseguindo…

a estrutura do meu xml é a seguinte

<Pessoa>
 	<id>1</id>
	<nome>Vinci Pegoretti Amorim</nome> 
                 <email>[email removido]</email>
	<telefone>([telefone removido]</telefone>
</Pessoa>

porém quando chamo a linha de código que vc citou CERJR
ocorre o seguinte erro…

Exception in thread "main" java.lang.ClassCastException: Pessoa cannot be cast to java.util.List
        at dados.LerXML.leXML(LerXML.java:20)
        at EdNFe.main(EdNFe.java:17)
Java Result: 1

faço a chamanda da seguinte forma…

XStream xstream = new XStream();
        try {            
            List<Pessoa> pessoas = (List<Pessoa>) xstream.fromXML(new FileReader(new File(nomeArq)));
         
        } catch (FileNotFoundException ex) {
            Logger.getLogger(LerXML.class.getName()).log(Level.SEVERE, null, ex);
        }    
        return pessoa;

nomeArq é uma String que recebe o local e o nome do meu arquivo Ex: “c://arq.xml”

se alguem puder me ajudar…

rbamartins

Rafaels, se vc irá usar de validação desse xml através de um schema (.xsd) aconselho usar o JAXB da SUN. É bem tranquilo e na própria documentação da SUN tem exemplos práticos de como se usar.

Abraços

R

rbamartins… você teria algum link que possa dar uma olhada sobre tal api??

acho que vai me servir para projetos futuros…

através dela consigo pegar os dados do xml e transformá-los em objetos???

Jair_Rillo_Junior

Rafael,

Tente primeiro ler a documentação do XStream http://xstream.codehaus.org/. Depois disso, você certamente vai conseguir fazer o parse do seu XML para Objeto. Dificilmente um exemplo do fórum vai encaixar exatamente para a sua necessidade

rbamartins

rafaels:
rbamartins… você teria algum link que possa dar uma olhada sobre tal api??

acho que vai me servir para projetos futuros…

através dela consigo pegar os dados do xml e transformá-los em objetos???

Isso. Faça como o Jair falou.

Link com a documentação JAXB -> http://java.sun.com/javaee/5/docs/tutorial/doc/bnazg.html
Não lembro ao certo, mas em meu blog já postei algo sobre o assunto -> http://rafaelmartinsjava.blogspot.com
Neste tópico do GUJ que é de um projeto que participo também tem vários exemplos sobre tal implementação -> http://www.guj.com.br/posts/list/59950.java

Abraços

R

valeu moçada…

consegui resolver meu problema aqui…

boa tarde a todos… :smiley:

Cerjr

rafaels,
então o problema que está acontecendo é porque você está tentando converter uma pessoa para um List.

<Pessoa>  
     <id>1</id>  
     <nome>Vinci Pegoretti Amorim</nome>   
                  <email>[email removido]</email>  
     <telefone>([telefone removido]</telefone>  
 </Pessoa>

se vc fizer essa alteração resolve…

<list>
   <Pessoa>  
        <id>1</id>  
        <nome>Vinci Pegoretti Amorim</nome>   
        <email>[email removido]</email>  
        <telefone>([telefone removido]</telefone>  
    </Pessoa>
</list>
R

Cerjr, havia conseguido de uma forma um pouco mais complexa…

mas tentei fazer como vc falou que é bem mais simples…
não possui erro mais, porém está me retornando uma lista vazia, sabe o que pode estar acontecendo?

Cerjr

rafaels:

Cerjr, havia conseguido de uma forma um pouco mais complexa…

mas tentei fazer como vc falou que é bem mais simples…
não possui erro mais, porém está me retornando uma lista vazia, sabe o que pode estar acontecendo?

cara, eu fiz uns testes aqui pra ver se tinha algum bug com o exemplo que eu te passei mas nos meus testes o código está funcionando…

eu vi no seu código postado anteriormente isso talvez o erro esteja ai…

XStream xstream = new XStream();  
try {              
     List<Pessoa> pessoas = (List<Pessoa>) xstream.fromXML(new FileReader(new File(nomeArq)));  
    
} catch (FileNotFoundException ex) {  
     Logger.getLogger(LerXML.class.getName()).log(Level.SEVERE, null, ex);  
}      
return pessoa;

vc recebe uma lista(pessoas), mas está retornando um objeto pessoa…

vc está iterando a lista para retornar a pessoa?

R

isso eu já tinha acertado...

o código está da seguinte forma...

public List<Pessoa> leXML(String nomeArq, ArrayList<Pessoa> lista) {
        // Configurando XStream		
        XStream xstream = new XStream();
        
        try {            
            
            List<Pessoa> pessoas = (List<Pessoa>) xstream.fromXML(new FileReader(new File(nomeArq)));
            
        } catch (FileNotFoundException ex) {
            Logger.getLogger(LerXML.class.getName()).log(Level.SEVERE, null, ex);
        }
        
  
        return lista;
        
    }
Cerjr

O erro está no seu método, não está no XStream.
Vc está com um erro de lógica…

teste este código…

public List<Pessoa> leXML(String nomeArq) {  
	    // Configurando XStream       
	    XStream xstream = new XStream();  
	    List<Pessoa> pessoas = null;
	    try {              
	        pessoas = (List<Pessoa>) xstream.fromXML(new FileReader(new File(nomeArq)));  
	    } catch (FileNotFoundException ex) {  
	       Logger.getLogger(LerXML.class.getName()).log(Level.SEVERE, null, ex);  
	    }  
	   return pessoas;  
	 }
R

pois é cara… vi aqui mesmo que eu tava viajando… hehehe

tinha acabado de arrumar…

valeu pela ajuda… brigadão…

Cerjr

beleza…
falow!!! 8)

Criado 10 de fevereiro de 2009
Ultima resposta 10 de fev. de 2009
Respostas 15
Participantes 5