2017-02-02 1 views
-1

Ich verwende SimpleXML, um XML-Nachrichten zu erstellen. Ich möchte die folgende Meldung erstellen:Attribut zu einem Element hinzufügen

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

ich diesen entsprechenden Java-Code erstellt:

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

    @Element 
    private String carrier; 
} 

aber ich habe den Fehler:

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

Wenn ich @Path("item/carrier") es verwenden, erstellt die folgende :

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

Antwort

0

Am besten Sie ordnen die Struktur mit Klassen hier.

Die Item Klasse schafft die Einwickeln<item>...</item> Element: die richtige XML Das schafft

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

    // ... 
} 

Die Carrier Klasse die tatsächlichen Werte hält.

Wenn Carrier nicht öffentlich sein soll, können Sie es ausblenden, indem Sie es privat machen oder eine innere Klasse von Item.

Verwandte Themen