java – 使用JAXB解组嵌套的xml项列表
作者:互联网
我有这样的xml结构,我需要使用JAXB转换为java对象:
<elements>
<elemet>
<type></type>
<property1></property1>
<property2></property2>
<items>
<item>
<id></id>
<name></name>
</item>
...
<item>
<id></id>
<name></name>
</item>
</items>
</element>
</elements>
我应该将此构造转换为具有嵌套项目列表的元素,而不是将每个项目转换为多个元素.这是Element类的示例:
class Element {
Integer type;
String property1;
String property2;
Integer itemId;
String itemName;
}
我想在解组后得到它们的清单.对于所有列表元素,Type,property1和property2值应该相同.
有没有可能使用JAXB解决这个问题?
解决方法:
您需要定义自定义XmlAdapter.在您的情况下,复杂的部分是您要将一个XML元素映射到多个Java Element对象.这意味着,在Java中,需要配置XmlAdapter以收集Element对象.假设您的示例XML片段是文档的一部分:
<document>
<elements>
<element>
....
</element>
<elements>
</document>
然后,您需要为List< Element>配置XmlAdapter. Java Document类中的字段:
class Document {
@XmlJavaTypeAdapter(CustomAdapter.class)
List<Element> elements;
}
然后,您的CustomAdapter类可以接收Element对象列表(对应于具有嵌套项的实际XML结构),并生成具有所需结构的Element列表.
例如,请检查JAXB XmlAdapter – Customized Marshaling and Unmarshaling
标签:java,xml,jaxb2 来源: https://codeday.me/bug/20190711/1437056.html