zolt85
@zolt85
Программист

Как работает наследование в классах для сериализации xml JAXB?

Здравствуйте.
Подскажите как работает наследование в классах для сериализации xml JAXB.

Т.е. у меня есть класс MySuperXml:
@XmlRootElement(name = "super-xml")
@XmlSeeAlso(OtherSuperXml.class)
public class MySuperXml {
     private List<Long> numbers;
 }


У него есть потомок OtherSuperXml:
public class OtherSuperXml extends MySuperXml {
     private List<String> names;
 }


При маппинге я получаю пустой список numbers хотя в xml физически они есть. Как сделать маппинг родительских полей (если я правильно понимаю задачу)?
  • Вопрос задан
  • 4053 просмотра
Решения вопроса 1
Вероятно, они просто добавились в names. Не хотите всё-таки добавить аннотации для numbers и names? Я вот даже не знаю, как это будет представлено в XML без них.

Например, вот так можно сделать:
@XmlRootElement(name = "super-xml")
@XmlSeeAlso(OtherSuperXml.class)
public class MySuperXml {
     @XmlElement(name = "number")
     private List<Long> numbers;
}
@XmlRootElement(name = "other-super-xml")
public class OtherSuperXml extends MySuperXml {
    @XmlElement(name = "name")
    private List<String> names;
}

Вообще, тяжко что-то отвечать на выдуманном примере. Вы же явно другую схему XML используете...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы