【问题标题】:Parse the following XML using Retrofit SimpleXml-Converter with a POJO class使用带有 POJO 类的 Retrofit SimpleXml-Converter 解析以下 XML
【发布时间】:2016-04-28 16:08:17
【问题描述】:

这是我的 xml 结构

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

和细节xml

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

这就是我想从服务器中检索并将上面的xml转换成它。

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

这是应该代表项目元素的类。

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

我对如何获取项目元素列表感到困惑。我似乎无法找到使这些项目成为 POJO 的方法,因为它没有结构。如何使用 RetrofitSimpleXmlConverter 来实现上述目标?

【问题讨论】:

    标签: android xml xml-parsing retrofit2


    【解决方案1】:

    您需要详细了解如何使用SimpleXML

    你的 POJO 反序列化类是错误的,你想要这样的:

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

    【讨论】:

    • 你的回答成功了!它被接受了。@Xyresic 你能帮我反序列化 DownloadPayload,我卡住了吗?
    • 您需要另一个根 Item 类来保存“key”和“value”字符串类型。您的 xml 是 DownloadPayload -> Item -> (key, value),而不是 DownloadPayload -> (key, value),就像您的问题一样。
    猜你喜欢
    • 2016-09-18
    • 2016-03-07
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多