2017-02-02 24 views
-1

SimpleXMLを使用してXMLメッセージを作成しています。私は、次のようなメッセージを作成します:要素に属性を追加する

<item> 
    <carrier close="true">1234567</carrier> 
</item> 

を、私は、この対応するJavaコード作成:

@Root(name="item") 
public class Item { 
    @Attribute(name="close") 
    @Path("carrier") 
    boolean closeCarrier; 

    @Element 
    private String carrier; 
} 

をしかし、私はエラーを取得:私は@Path("item/carrier")を使用する場合

Element 'carrier' is also a path name in class nl.example.Item

それは次のように作成し、 :

<item> 
    <carrier close="true">1234567</carrier> 
    <item> 
     <carrier close="true" /> 
    </item> 
</item> 

答えて

0

クラスを使って構造体をマップするのが最適です。

Itemクラスラップ<item>...</item>要素を作成:これは正しいXMLを作成します

@Root(name = "carrier") 
public class Carrier 
{ 
    @Text 
    private int value; 
    @Attribute(name = "close") 
    private boolean close; 

    // ... 
} 

@Root(name="item") 
public class Item 
{ 
    @Element(name = "carrier", required = true) 
    private Carrier carrier; 

    // ... 
} 

Carrierクラスは、実際のを保持しています。

Carrierを公開する予定がない場合は、非公開または内部クラスItemにすることで非表示にすることができます。

関連する問題