我想使用JAXB2注释对文档进行编组和解组,其结构如下:
<mylist>
<element />
<element />
<element />
</mylist>
这是一个格式良好的XML文档,它代表了一系列元素。
显而易见的事情是导致包含列表的某种根元素:
@XmlRootElement(name="container")
public class Container {
@XmlElement
@XmlElementWrapper(name="mylist")
public List<Element> getElements() {...}
}
但后来我在马歇尔上找到了一个带有多余根元素的文件:
<container>
<mylist>
<element />
<element />
<element />
</mylist>
</container>
我正在努力解决如何使用JAXB2执行此操作 - 如何(un)编组未包含其他对象的列表或数组?
答案 0 :(得分:1)
您可以创建一个通用列表包装类,它可以包含使用@XmlRootElement
注释的任何类的集合。编组时,您可以将其包装在JAXBElement
的实例中以获取所需的根元素。
import java.util.*;
import javax.xml.bind.annotation.XmlAnyElement;
public class Wrapper<T> {
private List<T> items = new ArrayList<T>();
@XmlAnyElement(lax=true)
public List<T> getItems() {
return items;
}
}
完整示例