XStream + RSS = ConversionException!

0 respostas
gfcittolin

Olá pessoal!

Estive tentando fazer um ‘core’ de leitor RSS, mas estou tento executar e lança Conversion Exception. Já mudei bastante coisa, mas até agora não mudou nada, sempre o mesmo erro… Não é problema de conexão, pois ele para no meio da leitura… Aí vai o código e o RSS que estou tentando ler.

Classe RSS

public class RSS {
    
    private Channel channel;
    
    public Channel getChannel(){
        return channel;
    }
    
    public void setChannel(Channel channel){
        this.channel = channel;
    }
}

Classe Channel

public class Channel {
    
    private String title = "";
    private String link = "";
    private String description = "";
    private String language = "";
    private ArrayList<Item> item;
    private String lastBuildDate = "";
    private String docs = "";
    private String generator = "";
    private String webMaster = "";

    //getters e setters...

}

Classe Item

public class Item {
    
    private String title = "";
    private String link = "";
    private String description = "";
    private String pubDate = "";
    private String guid = "";

    //getters e setters

}

Classe RSSXmlParser

public class RSSXmlParser {
    
    private BufferedReader breader;
    private URL url;
    private InputStreamReader isr;
    private String path;
    private XStream xs;
    
    public RSSXmlParser(String path) {
        this.path = path;
    }
    
    public RSS populate() throws MalformedURLException, IOException{
        url = new URL(path);
        isr = new InputStreamReader(url.openStream());
        breader = new BufferedReader(isr);
        System.out.println("Leitor pronto = " + breader.ready() + "\n");
        xs = new XStream();
        xs.alias("rss", new RSS().getClass());
        return (RSS) xs.fromXML(breader);
    }
}

e Classe Test

public class Test {
    
    public Test() {
    }
    
    public static void main(String[] args) {
        String path = "http://www.baboo.com.br/rss/default.asp";
        RSS rss = new RSS();
        RSSXmlParser rxp = new RSSXmlParser(path);
        System.out.println("Path = " + path);
        System.out.println("INÍCIO DE RSS\n");
        try {
            rss = rxp.populate();
        } catch (MalformedURLException ex) {
            System.out.println("URL INVÁLIDA");
            ex.printStackTrace();
        } catch (IOException ex) {
            System.out.println("ERRO DE CONEXÃO");
            ex.printStackTrace();
        }
        Channel c = rss.getChannel();
        System.out.println("Título = " + c.getTitle());
        System.out.println("Descrição = " + c.getDescription());
        System.out.println("Link = " + c.getLink());
        System.out.println("Língua = " + c.getLanguage());
        System.out.println("LastBuildDate = " + c.getLastBuildDate());
        System.out.println("Docs = " + c.getDocs());
        System.out.println("Generator = " + c.getGenerator());
        //e por aí vai...
        System.out.println("FIM DE RSS");
    }
}

Ah, a exception que está gerando:

Exception in thread "main" com.thoughtworks.xstream.converters.ConversionException: title : title
---- Debugging information ----
message             : title : title
cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : title : title
class               : RSS.RSS
required-type       : java.util.ArrayList
path                : /rss/channel/item/title
line number         : 13
class               : RSS.RSS
required-type       : java.util.ArrayList
path                : /rss/channel/item/title
line number         : 13
class               : RSS.RSS
required-type       : java.util.ArrayList
path                : /rss/channel/item/title
line number         : 13
-------------------------------
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:45)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:46)
        at com.thoughtworks.xstream.annotations.AnnotationReflectionConverter.unmarshallField(AnnotationReflectionConverter.java:52)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:169)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:121)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:56)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:45)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:46)
        at com.thoughtworks.xstream.annotations.AnnotationReflectionConverter.unmarshallField(AnnotationReflectionConverter.java:52)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:169)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:121)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:56)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:45)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:46)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:117)
        at com.thoughtworks.xstream.core.ReferenceByXPathMarshallingStrategy.unmarshal(ReferenceByXPathMarshallingStrategy.java:29)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:832)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:819)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:767)
        at parser.RSSXmlParser.populate(RSSXmlParser.java:45)
        at Test.main(Test.java:34)
Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: title : title
        at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:49)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:72)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.CGLIBMapper.realClass(CGLIBMapper.java:40)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:60)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:76)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:34)
        at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:62)
        at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:57)
        at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:50)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:56)
        ... 21 more
Java Result: 1

Já tentei trocar aquela ArrayList por ArrayList, por Item[] e por Item, mas a Exception é sempre a mesma…
Já dei uma boa olhada por aqui e não acheo mada…
Alguém sabe o que pode ser??
Desde já, grato.

Criado 14 de fevereiro de 2007
Respostas 0
Participantes 1