J'essaie de désérialiser ce bout de XML en Java:XML simple désérialisation différents types d'éléments avec le même nom
<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>
Le problème que je suis en cours d'exécution en est que l'élément soit info
peut avoir une ligne liste de img
ou il peut simplement contenir du texte. Je pensais traiter info
comme @Element
dans ma classe AnimeHolder, mais je ne peux pas avoir d'annotations en double. Je voudrais également accéder à l'attribut lang
d'info pour vérifier si c'est EN ou JP.
J'utilise ces classes pour contenir les données désérialisé:
@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;
}
}
et pour les articles d'information:
@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;
}
}
Vous devrez peut-être définir '' comme ayant un contenu «mixte» et gérer le texte par rapport aux éléments '' dans le code, par ex. pour interdire d'avoir à la fois le texte et "" en même temps. Voir "[Comment traiter avec JAXB ComplexType avec des données MixedContent?] (Http://stackoverflow.com/q/12568247/5221149)". –
Andreas
Merci! Cela m'a indiqué dans la bonne direction. Poster ma solution –