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.CannotResolveClassExceptioncom.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.CannotResolveClassExceptionat 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)