【问题标题】:JAXB: Marshalling list of annotated instancesJAXB:带注释实例的编组列表
【发布时间】:2012-06-08 09:32:13
【问题描述】:

我被困在应该非常基本的东西上。 我有一个带注释的 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(人,出);

我得到以下异常:

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

简单地编组带注释的 POJO 的多个实例的“正确”方法是什么? 我认为它必须被包装在另一个名为“人”的“上”根元素中,然后每个人节点都作为子节点。但是如何使用 JAXB 做到这一点?

谢谢

【问题讨论】:

    标签: java list jaxb marshalling


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 2012-12-21
      • 1970-01-01
      相关资源
      最近更新 更多