我们一直在使用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并进行编组/取消编组的建议。
谢谢! 马特
答案 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
应该也可以使用,并且更容易使用。