1

我被困在应该非常基本的东西上。我有一个带注释的 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 做到这一点?

谢谢

4

1 回答 1

-1

是的,你是对的。您必须将父元素作为 LIST,然后尝试在列表对象中添加人员值。

于 2012-06-08T09:50:03.240 回答