Я переключаюсь с Castor на JAXB2 для выполнения маршалинга/демаршалинга между объектами XML и Java. У меня проблема с настройкой коллекции полиморфных объектов.
Пример XML
<project name="test project">
<orange name="fruit orange" orangeKey="100" />
<apple name="fruit apple" appleKey="200" />
<orange name="fruit orange again" orangeKey="500" />
</project>
Класс проекта
Список oranges
работает нормально, я вижу в списке 2 апельсина. Но я не уверен, как настроить fruitList
. В fruitList
должно быть 3 фрукта: 2 апельсина и 1 яблоко.
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Project {
@XmlAttribute
private String name;
@XmlElement(name = "orange")
private List<Orange> oranges = new ArrayList<Orange>();
// Not sure how to configure this... help!
private List<Fruit> fruitList = new ArrayList<Fruit>();
}
Класс фруктов
Fruit — это абстрактный класс. По какой-то причине определение этого класса как абстрактного вызывает много проблем.
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class Fruit {
@XmlAttribute
private String name;
}
Оранжевый класс
public class Orange extends Fruit {
@XmlAttribute
private String orangeKey;
}
Класс Apple
public class Apple extends Fruit {
@XmlAttribute
private String appleKey;
}
Как настроить fruitList
в Project
, чтобы добиться того, чего я хочу здесь?
Спасибо большое!