Поскольку элемент link
появляется дважды (хотя они имеют различное пространство имен), вы должны сказать link
отдельно, весь мой ответ взорван:
1) Rss
боб
package com.example.xyzreader.data.bean;
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Namespace;
import org.simpleframework.xml.NamespaceList;
import org.simpleframework.xml.Root;
import org.simpleframework.xml.Text;
import java.util.List;
/**
* @author zmingchun
* @version 1.0.0 (2017/3/20)
*/
@NamespaceList({
@Namespace(prefix = "dc", reference = "http://purl.org/dc/elements/1.1/"),
@Namespace(prefix = "atom", reference = "http://www.w3.org/2005/Atom"),
@Namespace(prefix = "xhtml", reference = "http://www.w3.org/1999/xhtml"),
@Namespace(prefix = "atom10", reference = "http://www.w3.org/2005/Atom"),
})
@Root(name = "rss" , strict = false)
public class Rss {
@Element(name = "channel")
public ChannelBean channel;
@Attribute
public String version;
@Override
public String toString() {
return "Rss{" +
"channel=" + channel +
", version='" + version + '\'' +
'}';
}
@Root(name = "channel", strict = false)
public static class ChannelBean {
@Element
public String title;
@ElementList(entry = "link", inline = true, required = false)
public List<Link> links;
@Element
public String description;
@Element
public String language;
@Element
public String lastBuildDate;
@Element
public String pubDate;
@Element
public String generator;
@Element
public String docs;
@Element
public ImageBean image;
@Element
public MetaBean meta;
@Override
public String toString() {
return "ChannelBean{" +
"title='" + title + '\'' +
", links=" + links +
", description='" + description + '\'' +
", language='" + language + '\'' +
", lastBuildDate='" + lastBuildDate + '\'' +
", pubDate='" + pubDate + '\'' +
", generator='" + generator + '\'' +
", docs='" + docs + '\'' +
", image=" + image +
", meta=" + meta +
'}';
}
/**
* link bean
*/
static class Link {
@Attribute(required = false)
public String href;
@Attribute(required = false)
public String rel;
@Attribute(name = "type", required = false)
public String contentType;
@Text(required = false)
public String link;
@Override
public String toString() {
return "Link{" +
"href='" + href + '\'' +
", rel='" + rel + '\'' +
", contentType='" + contentType + '\'' +
", link='" + link + '\'' +
'}';
}
}
@Root(name = "image")
public static class ImageBean {
@Element
public String title;
@Element
public String url;
@Element
public String width;
@Element
public String height;
@Element
public String description;
@Element
public String link;
@Override
public String toString() {
return "ImageBean{" +
"title='" + title + '\'' +
", url='" + url + '\'' +
", width='" + width + '\'' +
", height='" + height + '\'' +
", description='" + description + '\'' +
", link='" + link + '\'' +
'}';
}
}
@Root(name = "meta")
public static class MetaBean {
@Attribute(required = false)
public String name;
@Attribute(required = false)
public String content;
@Override
public String toString() {
return "MetaBean{" +
"name='" + name + '\'' +
", content='" + content + '\'' +
'}';
}
}
}
}
2) TestSimpleXmlConvert
метод
package com.example.xyzreader.manager;
import android.util.Log;
import com.example.xyzreader.data.bean.Rss;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.convert.AnnotationStrategy;
import org.simpleframework.xml.core.Persister;
import org.simpleframework.xml.strategy.Strategy;
/**
* @author zmingchun
* @version 1.0.0 (2017/3/20)
*/
public class TestSimpleXmlConvert {
/**
* test convert by simple-xml-2.7.1
*/
public static void main(String[] args) {
Strategy strategy = new AnnotationStrategy();
Serializer serializer = new Persister(strategy);
try {
Rss tRss = serializer.read(Rss.class, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<rss xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:atom=\"http://www.w3.org/2005/Atom\" version=\"2.0\">\n" +
"<channel>\n" +
" <title>Coding Horror</title>\n" +
" <link>http://www.codinghorror.com/blog/</link>\n" +
" <description>programming and human factors - Jeff Atwood</description>\n" +
" <language>en-us</language>\n" +
"\n" +
" <lastBuildDate>Wed, 04 May 2011 20:34:18 -0700</lastBuildDate>\n" +
" <pubDate>Wed, 04 May 2011 20:34:18 -0700</pubDate>\n" +
" <generator>http://www.typepad.com/</generator>\n" +
" <docs>http://blogs.law.harvard.edu/tech/rss</docs>\n" +
"\n" +
" <image>\n" +
" <title>Coding Horror</title>\n" +
" <url>http://www.codinghorror.com/blog/images/coding-horror-official-logo-small.png</url>\n" +
" <width>100</width>\n" +
" <height>91</height>\n" +
" <description>Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.</description>\n" +
" <link>http://www.codinghorror.com/blog/</link>\n" +
" </image>\n" +
"\n" +
" <xhtml:meta xmlns:xhtml=\"http://www.w3.org/1999/xhtml\" name=\"robots\" content=\"noindex\" /> \n" +
" <atom10:link xmlns:atom10=\"http://www.w3.org/2005/Atom\" rel=\"self\" type=\"application/rss+xml\" href=\"http://feeds.feedburner.com/codinghorror\" /> \n" +
"\n" +
"</channel>\n" +
" </rss>");
Log.e(TestSimpleXmlConvert.class.getSimpleName(), "Convert result:"+ tRss.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}