JAXB XML在没有Parent元素的情况下重复交替使用XmlElements

时间:2018-04-27 07:26:28

标签: java xml jaxb xml-binding

我们一直在使用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>

我无法想出用JAXB Java XML Binding表示这种类型的XML的方法。是否可以使用JAXB Java XML Binding表示上述XML?

我知道上面的XML设计很糟糕,但我无法改变第三方的思想而改为使用和标记。

如果JAXB XML绑定无法正常工作,我将非常感谢您使用什么库/工具来生成XML并进行编组/取消编组的建议。

谢谢! 马特

1 个答案:

答案 0 :(得分:0)

是的,有可能。最简单的可能是使用@XmlElements / @XmlElement组合:

@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应该也可以使用,并且更容易使用。