2015-01-02 62 views
0

經過幾個小時檢查周圍的其他答案我無法找到一種方法來從rss提要正確讀取這個特定的XML文件。我有一個元素重複在同一水平:語言如何解析這個xml文件與同一級別的重複元素

這裏是RSS提要:

<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:veinteminutos="http://www.20minutos.es/" version="2.0"> 
    <channel> 
    <title>20minutos.es</title> 
    <link>http://www.20minutos.es/</link> 
    <description> 
    </description> 
    <language>es</language> 
    <pubDate>Fri, 02 Jan 2015 17:02:55 +0100</pubDate> 
    <lastBuildDate>Fri, 02 Jan 2015 17:02:55 +0100</lastBuildDate> 
    <ttl>2</ttl> 
    <sy:updatePeriod>hourly</sy:updatePeriod> 
    <sy:updateFrequency>2</sy:updateFrequency> 
    <sy:updateBase>2015-01-02T17:02:55+01:00</sy:updateBase> 
    <dc:language>es</dc:language> 
    <item>...</item> 
    <item>...</item> 
    <item>...</item> 
    <item>...</item> 
    </channel> 
</rss> 

在這裏,我的類聲明,但我不知道怎麼樣,我必須處理它:

public class Channel 
{ 
    @Element(name = "pubDate") 
    private String pubDate; 

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

    @Element(name = "description") 
    private String description; 

    @Element(name = "link") 
    private String link; 

    @Element(name = "lastBuildDate") 
    private String lastBuildDate; 

    @ElementList(inline = true) 
    private ArrayList<Item> item; 

    @Element(name = "language") 
    private String language; 

    @Element(name = "ttl") 
    private String ttl; 

    @Element(name = "updatePeriod") 
    private String updatePeriod; 

    @Element(name = "updateFrequency") 
    private String updateFrequency; 

    @Element(name = "updateBase") 
    private String updateBase; 

    @Namespace(reference="http://purl.org/dc/elements/1.1/", prefix = "dc") 
    @Element(name = "language") 
    private String dclanguage; 

    public String getPubDate() 
    { 
     return pubDate; 
    } 

    public void setPubDate (String pubDate) 
    { 
     this.pubDate = pubDate; 
    } 

    public String getTitle() 
    { 
     return title; 
    } 

    public void setTitle (String title) 
    { 
     this.title = title; 
    } 

    public String getDescription() 
    { 
     return description; 
    } 

    public void setDescription (String description) 
    { 
     this.description = description; 
    } 

    public String getLink() 
    { 
     return link; 
    } 

    public void setLink (String link) 
    { 
     this.link = link; 
    } 

    public String getLastBuildDate() 
    { 
     return lastBuildDate; 
    } 

    public void setLastBuildDate (String lastBuildDate) 
    { 
     this.lastBuildDate = lastBuildDate; 
    } 

    public ArrayList<Item> getItem() 
    { 
     return item; 
    } 

    public void setItem (ArrayList<Item> item) 
    { 
     this.item = item; 
    } 

    public String getLanguage() 
    { 
     return language; 
    } 

    public void setLanguage (String language) 
    { 
     this.language = language; 
    } 

    public String getTtl() 
    { 
     return ttl; 
    } 

    public void setTtl (String ttl) 
    { 
     this.ttl = ttl; 
    } 

    public String getUpdatePeriod() { 
     return updatePeriod; 
    } 

    public void setUpdatePeriod(String updatePeriod) { 
     this.updatePeriod = updatePeriod; 
    } 

    public String getUpdateFrequency() { 
     return updateFrequency; 
    } 

    public void setUpdateFrequency(String updateFrequency) { 
     this.updateFrequency = updateFrequency; 
    } 

    public String getUpdateBase() { 
     return updateBase; 
    } 

    public void setUpdateBase(String updateBase) { 
     this.updateBase = updateBase; 
    } 

    public String getDclanguage() { 
     return dclanguage; 
    } 

    public void setDclanguage(String dclanguage) { 
     this.dclanguage = dclanguage; 
    } 


} 

我得到的錯誤「org.simpleframework.xml.core.PersistenceException:名現場‘語言’‘語言’私人重複標註」

在此先感謝....

+0

我假設你遇到了問題,因爲在@Namespace(reference =「http://purl.org/dc/elements/1.1/」)之前評估了@Element(name =「language」)''。你能確定情況並非如此嗎? – Koogle

+0

我也嘗試在@Element之前放置@Naamespace(),但是我得到了同樣的錯誤....我甚至不確定這個@Namespace()調用是否正確,和/或如果我必須也爲1sr 元素... – lienmt

+0

您是否嘗試過使用'@Element(name =「dc:language」)的「hacky」方法?儘管它不是很乾淨? – Koogle

回答

1

呃,很抱歉地說,但這是一個內部錯誤。

我有同樣的問題,我修改了代碼以獲取需要讀取RSS/ATOM訂閱源的內容。我下載了簡單的xml框架的來源,看看有什麼問題。

在Composite類中,方法readElement(用名稱搜索註釋)忽略前綴,並且沒有找到ATOM或Itunes元素,我改變了這一點,並且工作。

讓我們希望有人在未來的版本中改變。