Простая проблема синтаксического анализа списка Xml

У меня есть этот xml:

<root>
<fruitlist>
    <apple>4</apple>
    <apple>5</apple>
    <orange>2</orange>
    <orange>6</orange>
</fruitlist>
</root>

Я пишу класс синтаксического анализатора, хотя не могу понять, как работать с несколькими типами узлов. Я могу легко разобрать список, содержащий только один тип узла (например, только яблоки, а не апельсины).

@ElementList(name = "fruitlist")
private List<Apple> exercises;

с более чем одним типом узла он также хочет анализировать узлы, отличные от Apple, которые не работают. Я также пытался сделать другой список для апельсинов, но он не работает, я не могу использовать имя списка фруктов более одного раза.

@ElementList(name = "fruitlist", entry = "orange")
private List<Orange> exercises;

В идеале было бы два отдельных списка для обоих типов узлов.

Хуби

РЕДАКТИРОВАТЬ: после дополнительного поиска и возни этот вопрос является дубликатом:

Наследование с помощью Simple XML Framework


person Hubidubi    schedule 05.08.2011    source источник
comment
Разве вы не можете просто сделать List<Fruit> и расширить классы Apple и Orange от базового класса/интерфейса Fruit?   -  person Michael    schedule 05.08.2011
comment
Я тоже пробовал, не работает.   -  person Hubidubi    schedule 05.08.2011
comment
Можете ли вы опубликовать то, что вы пробовали?   -  person Michael    schedule 05.08.2011
comment
Что-то вроде этого: класс Fruit... класс Apple расширяет Fruit... класс Orange расширяет Fruit... @ElementList(name = fruitlist) private List‹Fruit› упражнения;   -  person Hubidubi    schedule 05.08.2011


Ответы (2)


Попробуйте это, это сработает.

@ElementListUnion({
   @ElementList(entry="apple", type=Apple.class),
   @ElementList(entry="orange", type=Orange.class)
})
private List<Fruit> fruitlist;
person ng.    schedule 24.01.2013

person    schedule
comment
Я не упомянул в исходном сообщении, потому что это не имеет серьезного отношения, но я хотел бы использовать синтаксический анализ на Android. На Android jaxb не поддерживается, и я хотел избежать использования синтаксического анализа dom или sax. - person Hubidubi; 05.08.2011