Java 使用声明两次的2简单XML解析RSS提要
我试图用简单的XML解析RSS提要,其中包含一个在XML中声明两次的元素。在中,有一个元素是用名称空间声明的,没有名称空间。我似乎无法正确地得到注释,这两个元素都将被正确地反序列化。我用问题中描述的答案尝试了各种方法来解决这个问题,似乎有更多的人受到这个问题的困扰,但我还没有在互联网上找到解决办法 我要分析的XML提要是:Java 使用声明两次的2简单XML解析RSS提要,java,android,xml,rss,simple-framework,Java,Android,Xml,Rss,Simple Framework,我试图用简单的XML解析RSS提要,其中包含一个在XML中声明两次的元素。在中,有一个元素是用名称空间声明的,没有名称空间。我似乎无法正确地得到注释,这两个元素都将被正确地反序列化。我用问题中描述的答案尝试了各种方法来解决这个问题,似乎有更多的人受到这个问题的困扰,但我还没有在互联网上找到解决办法 我要分析的XML提要是: <?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="h
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<channel>
<title>Lorem ipsum dolor sit amet</title>
<atom:link href="... FEED URL ..." rel="self" type="application/rss+xml" />
<link>Lorem ipsum dolor sit amet</link>
<description>Lorem ipsum dolor sit amet</description>
<lastBuildDate>Sun, 29 Sep 2013 15:26:59 +0000</lastBuildDate>
<language>nl-NL</language>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<generator>http://wordpress.org/?v=3.6.1</generator>
<item>
<title>Lorem ipsum dolor sit amet</title>
<link>... URL ..</link>
<comments>... URL ..</comments>
<pubDate>Sun, 29 Sep 2013 08:08:13 +0000</pubDate>
<dc:creator>... AUTHOR ...</dc:creator>
<category><![CDATA[... Category ...]]></category>
<guid isPermaLink="false">... URL ..</guid>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in purus nunc. Nulla id lorem eget sem convallis bibendum.</description>
<content:encoded>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in purus nunc. Nulla id lorem eget sem convallis bibendum.</content:encoded>
<wfw:commentRss>... URL ..</wfw:commentRss>
<slash:comments>4</slash:comments>
</item>
</channel>
</rss>
Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet
2013年9月29日星期日15:26:59+0000
荷兰语
每小时
1.
http://wordpress.org/?v=3.6.1
Lorem ipsum dolor sit amet
... URL。。
... URL。。
2013年9月29日星期日08:08:13+0000
... 作者
... URL。。
Lorem ipsum dolor sit amet,是一位杰出的献身者。purus nunc的Suspendisse。这是一个很好的例子。
Lorem ipsum dolor sit amet,是一位杰出的献身者。purus nunc的Suspendisse。这是一个很好的例子。
... URL。。
4.
我在注释中使用的Java类:
@Root
public class Rss {
@Element(name = "channel")
public Channel mChannel;
@Attribute
public String version;
}
@NamespaceList({
@Namespace(reference = "http://www.w3.org/2005/Atom", prefix = "atom"),
@Namespace(reference = "http://purl.org/rss/1.0/modules/syndication/", prefix = "sy")
})
public class Channel {
@Element(name = "title")
public String title;
@ElementList(entry = "link", inline = true, required = false)
public List<Link> links;
@Element(name = "description")
public String description;
@Element(name = "lastBuildDate")
public String lastBuildDate;
@Element(name = "language", required = true)
public String language;
@Element(name = "updatePeriod")
public String updatePeriod;
@Element(name = "updateFrequency")
public int updateFrequency;
@Element(name = "generator")
public String generator;
@ElementList(name = "item", required = true, inline = true)
public List<Item> items;
}
@NamespaceList({
@Namespace(prefix = "content", reference = "http://purl.org/rss/1.0/modules/content/"),
@Namespace(prefix = "wfw", reference = "http://wellformedweb.org/CommentAPI/"),
@Namespace(prefix = "dc", reference = "http://purl.org/dc/elements/1.1/"),
//@Namespace(reference = "http://purl.org/rss/1.0/modules/slash/", prefix = "slash")
})
public class Item {
@Element(name = "title")
public String title;
@Element(name = "link")
public String link;
@Element(name = "guid")
public String guid;
@ElementList(inline = true, name = "comments", required = false)
public Comments comments;
@Element(name = "pubDate")
public String pubDate;
@ElementList(name = "category", inline = true)
public List<Category> categories;
@Element(name = "creator")
public String creator;
@Element(name = "description")
public String description;
@Element(name = "encoded", data=true)
public String encoded;
@Element(name = "commentRss")
public String commentRss;
@Override
public String toString() {
return title + "\n" + creator + "\n" + pubDate + "\n";
}
private class Comments {
@Text(required = false)
public String comment;
}
}
@Root
公共类Rss{
@元素(name=“channel”)
公共频道;
@属性
公共字符串版本;
}
@名称空间列表({
@命名空间(引用=”http://www.w3.org/2005/Atom,prefix=“atom”),
@命名空间(引用=”http://purl.org/rss/1.0/modules/syndication/“,prefix=“sy”)
})
公共类频道{
@元素(name=“title”)
公共字符串标题;
@ElementList(entry=“link”,inline=true,required=false)
公共列表链接;
@元素(name=“description”)
公共字符串描述;
@元素(name=“lastBuildDate”)
公共字符串lastBuildDate;
@元素(name=“language”,required=true)
公共字符串语言;
@元素(name=“updatePeriod”)
公共字符串更新周期;
@元素(name=“updateFrequency”)
公共整数更新频率;
@元素(name=“generator”)
公共字符串生成器;
@ElementList(name=“item”,必需=true,内联=true)
公共清单项目;
}
@名称空间列表({
@名称空间(前缀=“内容”,引用=”http://purl.org/rss/1.0/modules/content/"),
@命名空间(前缀=“wfw”,引用=”http://wellformedweb.org/CommentAPI/"),
@命名空间(prefix=“dc”,reference=”http://purl.org/dc/elements/1.1/"),
//@命名空间(引用=”http://purl.org/rss/1.0/modules/slash/“,前缀=“斜杠”)
})
公共类项目{
@元素(name=“title”)
公共字符串标题;
@元素(name=“link”)
公共字符串链接;
@元素(name=“guid”)
公共字符串guid;
@ElementList(inline=true,name=“comments”,required=false)
公众意见;
@元素(name=“pubDate”)
公共字符串pubDate;
@元素列表(name=“category”,inline=true)
公开名单类别;
@元素(name=“creator”)
公共字符串创建者;
@元素(name=“description”)
公共字符串描述;
@元素(name=“encoded”,data=true)
公共字符串编码;
@元素(name=“commentRss”)
公共字符串注释;
@凌驾
公共字符串toString(){
返回标题+“\n”+创建者+“\n”+发布日期+“\n”;
}
私人课堂评论{
@文本(必需=假)
公共字符串评论;
}
}
我对category元素也有类似的问题
我创建了一个新类,如下所示:
@Root(name = "category", strict = false)
class Category {
@Text
public String text;
}
它可以工作…为什么不使用带有@ElementList的列表?我已经在link元素的channel类中使用了,但是我正在寻找一个更优雅的解决方案。