我被困在应该非常基本的东西上。我有一个带注释的 Person POJO(字段上的@XMLAttribute 和@XMLElement 注释)。该类被注释为 @XMLRootElement 。现在我有一个服务,它执行一个返回这些实例列表的查询。换句话说,我最终得到
List<Person>
我只是想将此列表编组为 xml,并放入我的 servlet 的响应输出中。
如果我只是遍历列表并单独编组每个对象:
for(Person person : people){
jaxbMarshaller.marshal(person, out);
}
它多次输出整个文档(我最终为每条记录提供了多个 xml 标题行):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<name>Bob</name>
</person>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<name>Gary</name>
</person>
它不应该在记录之间输出重复的标题行。
另一方面,如果我尝试通过一次调用来编组整个列表: jaxbMarshaller.marshal(people, out);
我得到以下异常:
javax.xml.bind.JAXBException: class java.util.ArrayList nor any of its super class is
known to this context.
简单地编组带注释的 POJO 的多个实例的“正确”方法是什么?我假设它必须被包裹在另一个名为“人”的“上层”根元素中,然后每个人节点都作为一个子节点。但是您如何使用 JAXB 做到这一点?
谢谢