0
我試圖反序列化在Java中該段XML的:簡單的XML反序列化不同的元素類型具有相同的名稱
<anime id="16986">
<info type="Picture" src="http://~.jpg" width="141" height="200">
<img src="http://~" width="141" height="200"/>
<img src="http://~" width="318" height="450"/>
</info>
<info type="Main title" lang="EN">Long Riders!</info>
<info type="Alternative title" lang="JA">ろんぐらいだぁす!</info>
</anime>
我遇到的問題是,info
元素或者可以有一個內嵌清單img
的或它可以只包含文本。我在考慮在我的AnimeHolder類中將info
作爲@Element
,但我不能有重複的註釋。我還想訪問info的lang
屬性來檢查它是EN還是JP。
我使用這些類來反序列化的數據:
@Root(name="anime", strict=false)
public class AnimeHolder {
@Attribute(name="id")
private String ANNID;
@ElementList(inline=true)
private List<InfoHolder> infoList;
public String getANNID() {
return ANNID;
}
public List<InfoHolder> getInfoList() {
return infoList;
}
}
,併爲信息項目:
@Root(name="info", strict = false)
public class InfoHolder {
@ElementList(inline=true, required = false)
private List<ImgHolder> imgList;
@Attribute(name = "lang", required = false)
private String language;
public List<ImgHolder> getImgList() {
return imgList;
}
}
您可能需要將「」定義爲具有「混合」內容,並在代碼中處理文本與「」元素,例如,禁止同時使用文字和「」。請參閱「[如何使用MixedContent數據處理JAXB ComplexType?](http://stackoverflow.com/q/12568247/5221149)」。 –
Andreas
謝謝!這表明我朝着正確的方向前進。發佈我的解決方案。 –