Я пытаюсь десериализовать этот фрагмент XML в Java:
<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
, либо просто содержать текст. Я думал рассматривать info
как @Element
в моем классе AnimeHolder, но я не могу иметь повторяющиеся аннотации. Я также хотел бы получить доступ к атрибуту 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;
}
}
<info>
как имеющий смешанный контент и обработать элементы text vs<img>
в коде, например. чтобы запретить одновременное использование текста и<img>
. См. Как работать с JAXB ComplexType с данными MixedContent?. - person Andreas   schedule 29.09.2016