gpt4 book ai didi

java - JAXB:带注释的实例的编码列表

转载 作者:行者123 更新时间:2023-12-01 06:20:08 24 4
gpt4 key购买 nike

我被困在一些应该非常基本的事情上。我有一个带注释的 Person POJO(字段上有 @XMLAttribute 和 @XMLElement 注释)。该类被注释为 @XMLRootElement 。现在我有一个服务执行查询,返回这些实例的列表。换句话说,我最终得到

List<Person> 

我只是想将此列表编码(marshal)到 xml 中,放入我的 servlet 的响应输出中。

如果我只是循环遍历列表并单独编码(marshal)每个对象:

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 的多个实例的“正确”方法是什么?我假设它必须包装在另一个名为“people”的“上”根元素中,然后将每个人节点作为子节点。但是如何使用 JAXB 做到这一点呢?

谢谢

最佳答案

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

关于java - JAXB:带注释的实例的编码列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10946303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com