Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用声明两次的2简单XML解析RSS提要_Java_Android_Xml_Rss_Simple Framework - Fatal编程技术网

Java 使用声明两次的2简单XML解析RSS提要

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解析RSS提要,其中包含一个在XML中声明两次的元素。在中,有一个元素是用名称空间声明的,没有名称空间。我似乎无法正确地得到注释,这两个元素都将被正确地反序列化。我用问题中描述的答案尝试了各种方法来解决这个问题,似乎有更多的人受到这个问题的困扰,但我还没有在互联网上找到解决办法

我要分析的XML提要是:

<?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类中使用了,但是我正在寻找一个更优雅的解决方案。