java - 如何使用 jaxb 编码集合?

标签 java jaxb jaxb2

我有以下代码:

@XmlRootElement(name = "foo")
@XmlAccessorType(XmlAccessType.FIELD)
public class Foo
{

   @XmlElement
   private String id;

   ...

}

我希望能够编码 Set<Foo> foos进入:

<foos>
   <foo>
       <id>bar1</id>
   </foo>
   <foo>
       <id>bar2</id>
   </foo>
</foos>

我需要一个包装类吗?如果是这样,它应该是什么样子?我的注释正确吗?编码代码应该是什么样的(如果您能说明这一切,我们将不胜感激)?

最佳答案

如果你想封装任何集合,请使用 XmlElementWrapper

@XmlElementWrapper(name="foos")
@XmlElement(name="foo")
private Set<Foo> foos;

顺便说一句,您不能直接编码 Set,因此您必须将 Set 包含在您自己的类中。因此,如果您只想编码一组 Foo,则必须编写这样的 bean:

@XmlRootElement(name = "foos")
public class Foos {
    @XmlElement(name="foo")
    private Set<Foo> foo;
}

关于java - 如何使用 jaxb 编码集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26740338/

相关文章:

java - 使用 JAXB 生成 List 的 Setter

java - 将空字符串设置为 xsi :nil=true

java - Java 中的 Kevin Bacon 路径出现堆栈溢出?

java:与批处理服务器通信的最佳技术是什么?

java - MOXy 2.6.0 版本是否支持非字符串@XmlID?

rest - 有什么方法可以将JAXB XML实体中的两个链接映射到不同的类?

java - 当有静态类时,没有带有 @XmlElementDecl 的 ObjectFactory

spring-ws - 使用 Jaxb2marshaller 和 spring-ws 的自定义验证错误消息

java - 如何反向路由静态文件?

java - "If the previous activity was ... do something"