Ler Arquivo XML e gerar bean

0 respostas
T

Olá, estou com o seguinte dificuldade para ler arquivo XML gerado pela Caelum, que é bem parecido com o arquivo gerado pela Bovespa, com a seguinte URL:
link XML Negociacoes`

Tenho a seguintes classe que os nomes ja se explicam

1- ClienteWebService

package com.caelum.argentum.ws;

import com.caelum.argentum.beans.Negociacao;

import com.caelum.argentum.reader.LeitorXML;

import java.io.IOException;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.List;

public class ClienteWebService {

private static final String URL_WEBSERVICE = 
   "http://argentumws.caelum.com.br/negociacoes";

public List<Negociacao> getNegociacoes() throws  IOException{
  
    HttpURLConnection connection = null;

    URL url = new URL(URL_WEBSERVICE);
    
    connection = (HttpURLConnection)url.openConnection();
     
    return new LeitorXML().carrega(connection.getInputStream());//passa um tipo INPUTSTREAM para parametro
    

}

}

2LeitorXML

package com.caelum.argentum.reader;

import com.caelum.argentum.beans.Negociacao;

import com.thoughtworks.xstream.XStream;

import com.thoughtworks.xstream.io.xml.DomDriver;

import java.io.InputStream;

import java.util.List;

public class LeitorXML {

public LeitorXML(){
    
}

public List<Negociacao> carrega(InputStream inputStream) {
    
    XStream stream = new XStream(new DomDriver());
    //stream.alias("negociacao", Negociacao.class);
    List<Negociacao> listaDeXml =(List<Negociacao>) stream.fromXML(inputStream);
    return  listaDeXml;
    
 
}

}

3- E ainda a classe Test LeitorXMLTest(teste falhou)

package com.caelum.argentum.reader;

import com.caelum.argentum.beans.Negociacao;

import java.io.ByteArrayInputStream;

import java.io.InputStream;

import java.util.List;

import static junit.framework.Assert.assertEquals;

import org.junit.Test;

public class LeitorXMLTest {

public LeitorXMLTest(){
    
}

@Test
public void carregaXmlComUmaNegociacaoEmListaUnitaria(){
String xmlDeTeste = "<list>" +
      "  <negociacao>" +
      "    <preco>43.5</preco>" +
      "    <quantidade>1000</quantidade>" +
      "    <data>" +
      "      <time>1322233344455</time>" +
      "    </data>" +
      "  </negociacao>" +
      "</list>";
        
        
LeitorXML leitor = new LeitorXML();
InputStream xml = new ByteArrayInputStream(xmlDeTeste.getBytes());

List<Negociacao> negociacoes = leitor.carrega(xml);

assertEquals(43.5, negociacoes.get(0).getPreco(), 0.000001);

}

}

Ao rodar a classe teste segue o seguinte erro:expressionless:

WARNING: multiple versions of ant detected in path for junit
jar:file:/C:/NetBeans%208.1/extide/ant/lib/ant.jar!/org/apache/tools/ant/Project.class
and jar:file:/C:/Program%20Files/glassfish-4.1.1/glassfish/modules/ant.jar!/org/apache/tools/ant/Project.class
Testsuite: com.caelum.argentum.reader.LeitorXMLTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0,204 sec

Testcase: carregaXmlComUmaNegociacaoEmListaUnitaria(com.caelum.argentum.reader.LeitorXMLTest): Caused an ERROR
negociacao : negociacao
---- Debugging information ----
path : /list/negociacao
message : negociacao : negociacao
required-type : java.util.ArrayList
cause-message : negociacao : negociacao
class : java.util.List
cause-exception : com.thoughtworks.xstream.alias.CannotResolveClassException

com.thoughtworks.xstream.converters.ConversionException: negociacao : negociacao
---- Debugging information ----
path : /list/negociacao
message : negociacao : negociacao
required-type : java.util.ArrayList
cause-message : negociacao : negociacao
class : java.util.List
cause-exception : com.thoughtworks.xstream.alias.CannotResolveClassException

at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:45)

at com.thoughtworks.xstream.core.ReferenceByXPathUnmarshaller.convertAnother(ReferenceByXPathUnmarshaller.java:39)

at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:99)

at com.thoughtworks.xstream.core.ReferenceByXPathMarshallingStrategy.unmarshal(ReferenceByXPathMarshallingStrategy.java:12)

at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:552)

at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:540)

at com.thoughtworks.xstream.XStream.fromXML(XStream.java:497)

at com.caelum.argentum.reader.LeitorXML.carrega(LeitorXML.java:20)

at com.caelum.argentum.reader.LeitorXMLTest.carregaXmlComUmaNegociacaoEmListaUnitaria(LeitorXMLTest.java:37)

Caused by: com.thoughtworks.xstream.alias.CannotResolveClassException: negociacao : negociacao

at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:35)

at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:18)

at com.thoughtworks.xstream.mapper.XmlFriendlyMapper.realClass(XmlFriendlyMapper.java:44)

at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:18)

at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:49)

at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:18)

at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:18)

at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:18)

at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:46)

at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:18)

at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:18)

at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:18)

at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:70)

at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:18)

at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:18)

at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:18)

at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:27)

at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:78)

at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:60)

at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:53)

at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:38)

Test com.caelum.argentum.reader.LeitorXMLTest FAILED
test:
Deleting: C:\Users\ADMINI~1\AppData\Local\Temp\TEST-com.caelum.argentum.reader.LeitorXMLTest.xml
CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)

Criado 24 de dezembro de 2015
Respostas 0
Participantes 1