java - 没有父元素的 JAXB XML 重复交替 XmlElements
问题描述
我们一直在使用 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 和执行编组/取消编组的建议。
谢谢!马特
解决方案
对的,这是可能的。最简单的可能是使用@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
应该也可以工作并且更容易使用。
推荐阅读
- javascript - Django 模板包含一个 js 块
- java - 休眠:按加入分组
- android - 软键盘隐藏部分editText
- java - 为什么我的 ReceiveMessage.java 类没有将 SMS 正文设置为我的 textview?
- python - 将 DateTime 转换为数字
- azure - 将 Blob 从 BlobStorage 加载到 XslCompiledTransform.Load()
- javascript - 将值从后面的代码传递到 JS
- ios - 在单独的常量文件中验证密码
- web-deployment - BSP 部署 API
- python - Selenoid:为什么我不能运行特定的浏览器版本?