4

マーシャリングする必要がある単純なクラスがあります。クラスは次のように宣言されます。

@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>

ここで、1 つのファイルに複数のユーザーを配置したいのですが、自分でラッパー クラスを作成する必要はありません。@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>

どんな助けでも大歓迎です。

4

1 に答える 1

5

新しいクラスを作らないと無理です。
片道は

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

出力

<users>
    <xmlUsers>
       //...
    </xmlUsers>
    <xmlUsers>
       //...
    </xmlUsers>
</users>
于 2012-09-04T07:51:44.213 に答える