Ich versuche, diese Schnipsel von XML in Java deserialisieren:Einfache XML-Deserialisierung verschiedene Elementtypen mit dem gleichen Namen
<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>
Das Problem, das ich in laufende bin ist, dass das info
Element entweder ein Inline haben Liste von img
oder es kann nur Text enthalten. Ich dachte daran, info
als @Element
in meiner AnimeHolder-Klasse zu behandeln, aber ich kann keine doppelten Anmerkungen haben. Ich möchte auch auf das lang
Attribut der Info zugreifen, um zu überprüfen, ob es EN oder JP ist.
ich diese Klassen bin mit den entserialisierten Daten zu halten:
@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;
}
}
und für die Info-Objekte:
@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;
}
}
Möglicherweise müssen Sie definieren "" als "gemischt" Inhalt und behandeln die Text vs '' Elemente im Code, z. verbieten, gleichzeitig Text und '' zu haben. Siehe "[Umgang mit JAXB ComplexType mit MixedContent-Daten?] (Http://stackoverflow.com/q/12568247/5221149)". –
Andreas
Danke! Das hat mich in die richtige Richtung gelenkt. Meine Lösung veröffentlichen. –