2016-04-28 9 views
0

Dies ist meine XML-StrukturAnalysieren Sie die folgende XML Retrofit SimpleXML-Converter mit einer POJO Klasse

<downloads> 
<item>98cfa929ee93149e245aabf5e4377058</item> 
<item>498b513aa646d6ef1c407cbeabf6bd20</item> 
<item>13815d2c0dd53a251bb53717b9f43b64</item> 
<item>7a0615eb601264bbae0ad510a31fd61d</item> 
<item>3157910f72705e60d0d4ba26c3fb0e84</item> 
<item>29e037200d14e21b4ccdfbfaaf1621e8</item> 
<item>5f5da6505eaa203d65d1a6203dd0e742</item> 
<item>98dcbf2a73016cc9e72c3cbc101de151</item> 
<item>7b21d3f11bf6b12e4c4abca7004ad80d</item> 
<item>116049d5a4e53240b76666c6826fc6d6</item> 
<item>c7ec466398f3d8cee56147c696760076</item> 
<item>66ce3335de344b32986d2b77ff992ae2</item> 
</downloads> 

und die Details xml

<download> 
<item> 
<key>9b94e79fecb1f055f279d95e800867f9</key> 
<value> 
A Jedi uses the Force for knowledge and defense, never for attack. 
</value> 
</item> 
</download> 

Dies ist, was ich vom Server abgerufen werden soll und wandle das obige xml in es um.

public class DownloadPayloadCollection { 
     // Class log identifier 
     public final static String LOG_TAG = DownloadPayloadCollection.class.getSimpleName(); 
     @Root(name = "downloads") 
     @ElementList(inline=true) 
     private List<DownloadPayload> result; 


     public DownloadPayloadCollection() { 
     } 

     public List<DownloadPayload> getResult() { 
      Log.d(LOG_TAG, "CALLED FROM getResult() " + result.toString()); 
      return result; 
     } 
    } 

Hier ist die Klasse, die die Elementelemente darstellen sollte.

@Root(name = "download") 
public class DownloadPayload { 

    @Element(name = "key", required = false) 
    private String key; 

    @Element(name = "value", required = false) 
    private String value; 

    public DownloadPayload() { 
    } 

    public String getKeyString() { 
     return keyString; 
    } 

    public void setDownloadPayloadKey(String key) { 
     this.key = key; 
    } 

    public String getDownloadPayloadKey() { 
     return key; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    public String getValue() { 
     return value; 
    } 
} 

Ich bin verwirrt, wie man eine Liste der Elementelemente erhält. Ich kann keinen Weg finden, die Gegenstände zu einem POJO zu machen, da es keine Struktur hat. Wie kann ich RetrofitSimpleXmlConverter verwenden, um das oben genannte zu erreichen?

Antwort

4

Sie möchten etwas über die Verwendung von SimpleXML nachlesen.

Ihre POJO Deserialisierung Klassen sind falsch, Sie so etwas wie dies wollen:

@Root(name = "downloads") 
public class Downloads { 
    @ElementList(entry = "item", inline = true) 
    private List<String> items; 
} 
+0

Ihre Antwort hat funktioniert! Es akzeptiert. @ Xyresic könntest du mir helfen, das DownloadPayload zu deserialisieren, bin festgefahren? –

+0

Sie benötigen eine andere root-Item-Klasse, die die Zeichenfolgetypen "key" und "value" enthält. Dein XML ist DownloadPayload -> Item -> (Schlüssel, Wert), nicht DownloadPayload -> (Schlüssel, Wert) wie du in deiner Frage hast. – 0x1bad1d3a

Verwandte Themen