JAXB:带注释实例的编组列表

时间:2012-06-08 09:32:13

标签: java list jaxb marshalling

我坚持应该是非常基本的东西。 我有一个带注释的Person POJO(字段上的@XMLAttribute和@XMLElement注释)。 该类注释为@XMLRootElement。 现在我有一个服务,它会返回一个返回这些实例列表的查询。换一种说法, 我最终得到了

List<Person> 

我只是想将这个列表编组到xml中,放入我的servlet的响应输出中。

如果我只是遍历列表并单独编组每个对象:

for(Person person : people){
    jaxbMarshaller.marshal(person, out);
}

它多次输出WHOLE文档(我最终为每条记录添加了多个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(人,出);

我得到以下异常:

javax.xml.bind.JAXBException: class java.util.ArrayList nor any of its super class is
known to this context.

简单封送带注释的POJO的多个实例的“正确”方法是什么? 我认为它必须包含在另一个名为'people'的'upper'根元素中,然后包含在每个人节点作为子节点。但是你如何用JAXB做到这一点?

由于

1 个答案:

答案 0 :(得分:-1)

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