Мой друг попросил меня написать этот вопрос:
РЕДАКТИРОВАТЬ: Он решил оставить вопрос самостоятельно здесь: JAXB Unmarshalls XML неправильно Я пытался удалить этот вопрос, но не смог.
Я пытаюсь создать класс Java, который называется MyContainer
. Этот класс расширяет мой другой класс, называемый Container
. Container
имеет переменную с именем: protected List<ResourceReference<Component>> child
Единственная переменная MyContainer
имеет ту, которая наследуется от Container
. Это List
, однако, не будет маршалироваться с JAXB, когда у меня есть ребенок, указанный как XmlList
.
Это будет маршал как XmlElement
, однако я не хочу, чтобы данные отображались. Когда он маршалируется как XmlElement
, он перечисляет атрибуты в List
, но не «наследственно». Он просто перечисляет два элемента, как если бы они были свойствами класса, а не принадлежал дочернему списку.
Как мне заставить Jaxb правильно маршалировать List
(который создается как ArrayList)?
РЕДАКТИРОВАТЬ: Вот пример:
Вот что я получаю:
<MyContainer name="Container Name">
<booleanVal>false</booleanVal>
<child id="Test Comp 1"/>
<child id="Test Comp 2"/>
</and>
Это больше, чем я ожидаю:
<MyContainer name="Container Name">
<booleanVal>false</booleanVal>
<child> /// This would be the class variable of the extended Class, Container
<ResourceRef id="Entry 1">
<ResourceRef id="Entry 2">
</child>
</and>
Конечно, мои текущие результаты, вероятно, получены из списка в контейнере, помеченного аннотацией @XmlElement. Тем не менее, JAXB не будет ничего маршалировать ..