2015-04-28 20 views
3

我試圖找出解組某些數據從公共API(意味着我無法控制如何將其序列化爲XML)的最佳方法。使用Jersey JAX-RS(列表清單)複雜的非編組

<Show> 
<name>Buffy the Vampire Slayer</name> 
<totalseasons>7</totalseasons> 
<Episodelist> 
    <Season no="1"> 
    <episode>...</episode> 
    <episode>...</episode> 
    <episode>...</episode> 
    <episode>...</episode> 
    </Season> 
    <Season no="2">...</Season> 
    <Season no="3">...</Season> 
</Episodelist> 
</Show> 

以上是從ReSTful查詢返回的XML示例。理想的情況下,我想弄清楚如何做兩件事。 1)將所有季節列表合併到一個劇集列表中,以及2)是否有可能在解組XML時僅訪問子元素並忽略父元素(例如僅訪問EpisodeList,忽略顯示)?

謝謝你的幫助!這是我的第一篇SO帖子(對於編程還是比較新的)。

+0

如果公共API提供和XSD,你可以使用JAXB轉換/解組XML到Java對象。然後,只要用java對象做什麼就可以了。 – rsavchenko

+0

爲什麼不使用xml解析器? – Franky

+0

@rsavchenko據我所知,他們不提供XSD(我也不確定這將如何幫助我)... – RNGuy

回答

0

我最終創建了一些「幫助器」類來提取我需要的數據。我在EpisodeListHelper中編寫了一個getEpisodeList方法,該方法將所有情節組合成一個列表。

EpisodeListHelper類

@XmlRootElement(name="Show") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class EpisodeListHelper { 
    @XmlElementWrapper(name="Episodelist") 
    @XmlElement(name="Season") 
    private List<SeasonHelper> seasonList; 
... 
} 

SeasonHelper類

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class SeasonHelper { 
    @XmlElement(name="episode") 
    private List<Episode> list; 
... 
}