2015-04-07 8 views
6

Sto lavorando con la struttura XML semplice e ho semplicemente rinominato alcuni layout XML, che ora non sembrano più funzionare.L'elemento non ha corrispondenza nella classe

Questo è il mio XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
    <orderListReply id="R000000000006"> 
    <order orderid="12" type="outbound" state="available"> 
     <todo>2</todo> 
     <done>0</done> 
     <lines>1</lines> 
     <erporderid>0</erporderid> 
    </order> 
    </orderListReply> 

E questa è la mia definizione di classe Codice:

@Root(name="orderListReply") 
public class OrderListReplyTelegram extends Telegram { 

    @ElementList(name="order", inline=true, required=false) 
    private List<OrderListItem> orders; 
    ... 

Questo è l'errore che ottengo:

org.simpleframework.xml. core.ElementException: l'elemento 'order' non ha corrispondenza nella classe nl.minerall.sapphire.pocket.telegrams.OrderListReplyTelegram alla riga 1

risposta

4

Sfortunatamente, il debug di Simple XML Framework non è facile, ma alcuni tentativi ed errori mi hanno aiutato.

La mia classe OrderListItem aveva questa intestazione:

@Element(name="order") 
public class OrderListItem { 

quando cambiato in questo:

@Root(name="order") 
public class OrderListItem { 

ha funzionato. Stranamente, nell'altro codice, l'annotazione @Element sembrava funzionare (questo codice proviene da un altro albero funzionante).

+3

Ho notato che l'annotazione @Root è obbligatoria. Inoltre puoi usare @Root (strict = false) –

Problemi correlati