java - 列表的自动 XmlRootElement 包装器

标签 java xml jaxb

我有一个简单的类需要整理。该类声明为:

@XmlRootElement  
public class XMLUser...

这是我得到的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xmlUser>
    <login>myLogin</login>
    <password>myPass</password>  
    <role name="role1"/>  
    <role name="role2"/>  
    <role name="role3"/>  
</xmlUser>

现在我想在一个文件中有多个用户,但不需要自己创建包装器类,有点像使用 @XmlElementWrapper 但用于类而不是字段。我不知道这是否可能。

这样我就可以编码一个列表(或 jaxb 提供的某些对象)并且我可以得到一个像这样的 xml(自动生成的 <users> 标记):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<users>
    <xmlUser>
        <login>login1</login>
        <password>pass2</password>
        <role name="role1"/>
        <role name="role2"/>
    </xmlUser>
    <xmlUser>
        <login>login2</login>
        <password>pass2</password>
        <role name="role1"/>
        <role name="role3"/>
    </xmlUser>
</users>

感谢任何帮助。

最佳答案

不创建新类是不可能的。
单一的方式是

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Users 
{
   @XmlElement(name = "xmlUsers")
   List<XmlUser> users = new ArrayList<XmlUser>();
}  

输出

<users>
    <xmlUsers>
       //...
    </xmlUsers>
    <xmlUsers>
       //...
    </xmlUsers>
</users>

关于java - 列表的自动 XmlRootElement 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12256221/

相关文章:

java - jgit - 基于文件扩展名的 git diff

java - 如何解决java中的数组越界异常

xml - xjc 生成的重复嵌套类

java - JAXB - 如果为 false,则抑制 boolean 属性

java - 如何实现自调整二叉搜索树?

xml - xslt中for循环的使用方法

xml - 使用 T-SQL 更新多个 XML 节点

java - 如何使用 DOM 解析 java 中的内联/混合内容 xml 元素

xml - 具有命名空间的 XML 属性的 XSD 语法

Java 哈希码在不同机器上的工作方式不同