我有这样的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;
}
我想在解组后得到它们的清单。所有列表元素的类型,属性1和属性2值都应该相同。
是否有可能使用JAXB解决此问题?
最佳答案
您将需要定义一个自定义XmlAdapter。您的情况中最复杂的部分是您要将一个XML element
映射到多个Java Element
对象。这意味着,在Java中,需要配置XmlAdapter
以收集Element
对象。假设您的示例XML片段是文档的一部分:
<document>
<elements>
<element>
....
</element>
<elements>
</document>
然后,您将需要为Java
XmlAdapter
类中的List<Element>
字段配置Document
:class Document {
@XmlJavaTypeAdapter(CustomAdapter.class)
List<Element> elements;
}
然后,您的
CustomAdapter
类可以接收Element对象的列表(与带有嵌套项的实际XML结构相对应),并生成具有所需结构的Element列表。例如,检查JAXB XmlAdapter – Customized Marshaling and Unmarshaling