1

I am trying to build an RSS reader for both Atom and RSS 2.0 for few interesting sites. This is for an app on Android. The app uses Retrofit for getting the xml for feeds and Simple XML Converter for parsing the xml. While I have the RSS part working, I am facing issues with Atom Feeds.

The link that I am trying to parse is :- http://blog.uncommonsensesecurity.com/feeds/posts/default

I am getting the exception :-

Caused by: org.simpleframework.xml.core.PersistenceException: Element 'link' is already used with @org.simpleframework.xml.Element(data=false, name=link, required=false, type=void) on field 'link' public com.gtd.isnb.comm.retrofit.atom.EntryElement$Link com.gtd.isnb.comm.retrofit.atom.EntryElement.link at line 1
at org.simpleframework.xml.core.Variable$Adapter.read(Variable.java:484)
at org.simpleframework.xml.core.Variable$Adapter.read(Variable.java:462)
at org.simpleframework.xml.core.Composite.readVariable(Composite.java:623)
at org.simpleframework.xml.core.Composite.readInstance(Composite.java:573)
at org.simpleframework.xml.core.Composite.readUnion(Composite.java:549)
at org.simpleframework.xml.core.Composite.readElement(Composite.java:532)
at org.simpleframework.xml.core.Composite.readElements(Composite.java:445)
at org.simpleframework.xml.core.Composite.access$400(Composite.java:59)
at org.simpleframework.xml.core.Composite$Builder.read(Composite.java:1383)
at org.simpleframework.xml.core.Composite.read(Composite.java:201)
at org.simpleframework.xml.core.Composite.read(Composite.java:148)
at org.simpleframework.xml.core.Traverser.read(Traverser.java:92)
at  org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:190)
at     org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:167)
at     org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:124)
at org.simpleframework.xml.core.Composite.readVariable(Composite.java:623)
at org.simpleframework.xml.core.Composite.readInstance(Composite.java:573)
at org.simpleframework.xml.core.Composite.readUnion(Composite.java:549)
at org.simpleframework.xml.core.Composite.readElement(Composite.java:532)
at org.simpleframework.xml.core.Composite.readElements(Composite.java:445)
at org.simpleframework.xml.core.Composite.access$400(Composite.java:59)
at org.simpleframework.xml.core.Composite$Builder.read(Composite.java:1383)
at org.simpleframework.xml.core.Composite.read(Composite.java:201)
at org.simpleframework.xml.core.Composite.read(Composite.java:148)
at org.simpleframework.xml.core.Traverser.read(Traverser.java:92)
at org.simpleframework.xml.core.Persister.read(Persister.java:625)
at org.simpleframework.xml.core.Persister.read(Persister.java:606)
at org.simpleframework.xml.core.Persister.read(Persister.java:584)
at org.simpleframework.xml.core.Persister.read(Persister.java:562)
at org.simpleframework.xml.core.Persister.read(Persister.java:462)
at com.mobprofs.retrofit.converters.SimpleXmlConverter.fromBody(SimpleXmlConverter.java:70)

My Pojos are:

@Root (name = "feed", strict=false)
public class FeedElement
{

    @ElementList ( inline = true )
    List<EntryElement > entries;

    public List< EntryElement > getEntries ()
    {
        return entries;
    }
}

@Root ( name = "entry", strict = false )
public class EntryElement
{

    @Element ( name = "title" )
    public String title;

    @Element ( name = "link", required = false )
    public Link link;

    @Element ( name = "id" )
    public String id;

    @Element ( name = "updated" )
    public String updated;

    @Element ( name = "summary" )
    public String summary;
}



@Root (name="link")
public class EntryLinkElement
{

    @Attribute ( name = "rel" )
    public String rel;

    @Attribute ( name = "type" )
    public String type;

    @Attribute ( name = "href" )
    public String href;

    @Attribute ( name = "title" )
    public String title;


}

API looks like`

@GET("/{path}")
FeedElement getAtomFeeds(@Path(value="path", encode=false) String path);
takesavy
  • 135
  • 2
  • 16

1 Answers1

0

this link will show you hot parse xml using Retrofit https://futurestud.io/blog/retrofit-how-to-integrate-xml-converter/ and here is an example How to use Retrofit and SimpleXML together in downloading and parsing an XML file from a site?

Community
  • 1
  • 1
abozaid
  • 967
  • 8
  • 11