列表的自动XmlRootElement包装器

时间:2012-09-04 02:59:02

标签: 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而是用于类而不是字段。我不知道这是否可行。

这样我就可以编组一个List(或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>

感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

如果不创造新课,这是不可能的 单程是

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

输出

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