Dúvidas ao converter arquivo xml como XStream

Bom dia a todos!

Procurei em vários forums e tópicos sobre o meu problema, todo mundo mostrava uma solução porém são tantas que fiquei até confuso :slight_smile: !

O meu problema parece simples de se resolver, estou tentando converter o seguinte arquvio xml utilizando xStream:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Dimensao>
<descricaoDimensao>Metro</descricaoDimensao>
<siglaDimensao>m</siglaDimensao>
<indicativoObra>true</indicativoObra>
<descricaoIndicativoObra>Sim</descricaoIndicativoObra>
<identificador>1</identificador>
<dataAtivacao>2003-07-01</dataAtivacao>
</Dimensao>

Quero utilizar o seguinte código para enviar as informações do xml para o bean:

@XStreamAlias("Dimensao")
public class Dimensao {

	@XStreamAlias("identificador")
	private Long identificador;
	@XStreamAlias("dimensaoDescricao")
	private String dimensaoDescricao;
	@XStreamAlias("siglaDimensao")
	private String siglaDimensao;
	@XStreamAlias("indicativoObra")
	private Integer indicativoObra;
	@XStreamAlias("descricaoIndicativoObra")
	private String descricaoIndicativoObra;
	@XStreamAlias("dataAtivacao")
	private String dataAtivacao;

getters.. setterss..

Vejam que eu mapeio o bean utilizando Annotations do XStream… porém ao executar o código da o seguinte erro:

Exception in thread “main” com.thoughtworks.xstream.converters.ConversionException: descricaoDimensao : descricaoDimensao : descricaoDimensao : descricaoDimensao
---- Debugging information ----
message : descricaoDimensao : descricaoDimensao
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : descricaoDimensao : descricaoDimensao
class : br.gov.sc.ciga.obras.wstce.Dimensao
required-type : br.gov.sc.ciga.obras.wstce.Dimensao
path : /Dimensao/descricaoDimensao
xpath : /Dimensao/descricaoDimensao

at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:88)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:55)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:75)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:59)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:142)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:931)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:917)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:861)
at br.gov.sc.ciga.obras.wstce.ClienteWebService.chamaMetodo(ClienteWebService.java:71)
at br.gov.sc.ciga.obras.wstce.ClienteWebService.main(ClienteWebService.java:80)

Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: descricaoDimensao : descricaoDimensao
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:62)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.CGLIBMapper.realClass(CGLIBMapper.java:50)

Alguém poderia me ajudar?

XStream xstream = new XStream();
xstream.processAnnotations(Dimensao.class);
xstream.fromXML(xml, new Dimensao());

Alexandre, alterei o código como me mostrou para:

		XStream xStream = new XStream(new Dom4JDriver());			
		BufferedReader input = new BufferedReader(new FileReader(file));
		Dimensao dimensao = (Dimensao) xStream.fromXML(input,new Dimensao());
		input.close();

		System.out.println(dimensao.getDimensaoDescricao());

Agora o erro mudou para:

Exception in thread “main” com.thoughtworks.xstream.mapper.CannotResolveClassException: Dimensao : Dimensao
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:62)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.CGLIBMapper.realClass(CGLIBMapper.java:50)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:86)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:87)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:52)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:138)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:931)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:917)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:889)
at br.gov.sc.ciga.obras.wstce.ClienteWebService.chamaMetodo(ClienteWebService.java:69)
at br.gov.sc.ciga.obras.wstce.ClienteWebService.main(ClienteWebService.java:78)

Parece que a classe não está mais mapeada!

O que pode ser? Obrigado pela ajuda!

Com o código abaixo o erro acontece ao converter tag descricaoDimensao. Essa tag está mapeada no meu bean.

		XStream xStream = new XStream(new Dom4JDriver());			
		xStream.processAnnotations(Dimensao.class);
		BufferedReader input = new BufferedReader(new FileReader(file));
		Dimensao dimensao = (Dimensao) xStream.fromXML(input, new Dimensao());
		input.close();

		System.out.println(dimensao.getDimensaoDescricao());

Exception in thread “main” com.thoughtworks.xstream.converters.ConversionException: descricaoDimensao : descricaoDimensao : descricaoDimensao : descricaoDimensao

O nome do campo é “descricaoDimensao” e você mapeou como “dimensaoDescricao”. :wink: