JAXB XML, повторяющий чередующиеся XmlElements без родительского элемента - PullRequest
0 голосов
/ 27 апреля 2018

Мы использовали JAXB для генерации XML для взаимодействия с третьей стороной. Эта третья сторона просит, чтобы для одного раздела мы создали набор из 2 разных 0-n XML-элементов в повторяющемся порядке, без родительских элементов, разделяющих их. Вот пример того, что запрашивается:

<education>
   <code>ENG24</code>
   <percentage>25</percentage>
   <code>ENG25</code>
   <percentage>20</percentage>
   <code>SPA50</code>
   <percentage>30</percentage>
   <code>SPA60</code>
   <percentage>25</percentage>
</education>

Я не могу найти способ представления этого типа XML с помощью JAXB Java XML Binding. Можно ли вообще представить вышеупомянутый XML с помощью JAXB Java XML Binding?

Мне известно, что приведенный выше XML плохо спроектирован, но я не могу передумать использовать сторонние теги и теги вместо них.

Если привязка JAXB XML не сработает, я был бы очень благодарен за предложения о том, какую библиотеку / инструмент использовать вместо этого для создания XML и выполнения маршала / демаршалинга.

Спасибо! Matt

1 Ответ

0 голосов
/ 27 апреля 2018

Да, это возможно. Возможно, проще всего было бы использовать @XmlElements / @XmlElement combo:

@XmlElements({
    @XmlElement(name="code", type=String.class),
    @XmlElement(name="percentage", type=Integer.class)
})
public List<Serializable> items;

В качестве альтернативы вы также можете использовать @XmlElementRef / @XmlElementRef и иметь List<JAXBElement<? extends Serializable>> items. Каждый элемент будет тогда JAXBElement<? extends Serializable>, несущим значение, а также имя элемента.

Но так как у вас разные типы (String / Integer), @XmlElements / @XmlElement также должен работать и его гораздо проще использовать.

...