改进XML响应?

时间:2017-09-11 09:29:47

标签: android xml retrofit

我应该如何为这种xml响应创建类?

<delivery_zones>
            <zone>3</zone>
            <zone_name>....</zone_name>
            <zone>10</zone>
            <zone_name>....</zone_name>
            <zone>7</zone>
            <zone_name>....</zone_name>
            <zone>9</zone>
            <zone_name>....</zone_name>
            <zone>13</zone>
            <zone_name>....</zone_name>
</delivery_zones>

谢谢..

4 个答案:

答案 0 :(得分:0)

写一个班级

class Zone {
   int id;
   String name;

   public(int id, String name) {
       this.id = id;
       this.name = name;
   }
}

创建Zone对象列表。解析响应并为每个区域创建一个Zone类的对象,如果它不包含该区域,则添加到列表中。

我认为这可能会对你有所帮助。如果您需要有关xml解析的更多信息。这个链接https://stackoverflow.com/a/5059411/7867325可以帮助您。

答案 1 :(得分:0)

这是整个回复

<rss version="2.0" >
<channel>
    <record>46</record>
    <total_record>46</total_record>
    <item>
        <name>1 Can</name>
        <description />
        <delivery_time>24 hours</delivery_time>
        <img_1 />
        <img_2 />
        <img_3 />
        <thumb_1 />
        <thumb_2 />
        <thumb_3 />

        <delivery_zones>
            <zone>5</zone>
            <zone_name>Free Delivery</zone_name>
        </delivery_zones>
        <price_records>1</price_records>

    </item>

    <item>
    ....
    </item>

</channel>
</rss>

这是我的班级:

public static class Item {

    @Element(required = false)
    public String name;

    @Element(name = "delivery_zones", required = true)
    public DeliveryZones delivery_zones;


//        @Path(value = "delivery_zones")
//        @ElementList(name = "zone", required = true, inline = true)
//        private List<Integer> zone;
//
//        @Path(value = "delivery_zones")
//        @ElementList(name = "zone_name", required = true, inline = true)
//        private List<String> zoneName;


//        @Path(value = "delivery_zones")
//        @ElementList(name = "zone", required = true, inline = true)
//        public List<Integer> ids;
//
//        @Path(value = "delivery_zones")
//        @ElementList(name = "zone_name", required = true, inline = true)
//        public List<String> names;
}

答案 2 :(得分:0)

如果有人遇到同样的问题,这里有解决方法:

public static class Zone {
    @Element(name = "zone", required = false)
    public String zone;
}

public static class ZoneName {
    @Element(name = "zone_name", required = false)
    public String zone_name;
}


public static class DeliveryZones {

    @ElementList(entry = "zone", inline = true)
    public List<Zone> zones;

    @ElementList(entry = "zone_name", inline = true)
    public List<ZoneName> zone_name;
}

答案 3 :(得分:0)

另一种解决方案

@Root
public static class DeliveryZones {

    @ElementList(entry = "zone", inline = true)
    public List<String> zones;

    @ElementList(entry = "zone_name", inline = true)
    public List<String> zone_name;
}

并在父类中

    @Element(name = "delivery_zones", required = true)
    public DeliveryZones delivery_zones;