После долгих разочарований я пришел сюда за помощью. Я использую org.simpleframework.xml для анализа RSS-каналов в Android. Я получаю следующую ошибку, когда пытаюсь проанализировать файл xml:
org.simpleframework.xml.core.PersistenceException: Element 'link' is already used with @org.simpleframework.xml.Element(data=false, name=, required=true, type=void) on field 'link'
Это образец xml, который я пытаюсь разобрать:
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xml:base="http://www.somelink.com/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>My Title</title>
<description>Latest breaking news, sport, weather and opinion, from South Africa, Africa and the world.</description>
<link>http://www.somelink.com/</link>
<atom:link rel="self" href="http://www.someotherlink.com" />
</channel>
</rss>
Это классы и аннотации, которые я использую в коде:
@Root(name = "rss")
@Namespace(reference = "http://www.w3.org/2005/Atom", prefix = "atom")
public class NewsFeed
{
@Version(revision = 2.0)
private float version;
@Attribute
private String base;
@Element
private Channel channel;
}
@Root(name = "channel")
public class Channel
{
@Element
private String title;
@Element
private String description;
@Element
private String link;
@Element
@Namespace(reference = "http://www.w3.org/2005/Atom", prefix = "atom")
private Link rssLink;
@ElementList(inline = true)
private List<NewsItem> newsItems;
}
@Root(name = "link")
public class Link
{
@Attribute
private String rel;
@Attribute
private String href;
public String getRel()
{
return rel;
}
public void setRel(String rel)
{
this.rel = rel;
}
public String getHref()
{
return href;
}
public void setHref(String href)
{
this.href = href;
}
}
Я создал класс Link, чтобы использовать пространство имен атома. Как вы можете видеть из ошибки, библиотека, похоже, не принимает во внимание пространство имен, и поэтому она жалуется, что элемент ссылки уже используется. Что я делаю не так? Ваша помощь будет принята с благодарностью.