为嵌套数组

时间:2015-11-30 23:36:24

标签: android xml retrofit simple-framework

我无法弄清楚如何为simplexml创建POJO模型。

假设我有一个我想从中提取数据的xml,如下所示:

<root>
    <station>
        <station>
            <abbr>Abbr1</abbr>
        </station>
    </station>
    <station>
        <station>
            <abbr>Abbr2</abbr>
        </station>
    </station>
    <station>
        <station>
            <abbr>Abbr3</abbr>
        </station>
    </station>
</root>

所以基本上我认为我在一个数组中有一个数组,所以我编写了我的java模型:

@org.simpleframework.xml.Root(name="root")
public class Root {
    @Element(name="stations")
    public Stations stations;

    @Element(name="station")
    public Station[] station;

    @Element(name="abbr")
    public String abbr;
    public class Stations{
        public Station[] station;
    }

    public class Station{
        public String abbr;
    }
}

我试过调整周围的注释,但我不能让它工作。我非常感谢你的帮助,谢谢你。

1 个答案:

答案 0 :(得分:2)

我发现XML结构有点奇怪,因为子站标签似乎是多余的。然而,如果这是你要去的地方,那么这些是可以为你工作的带注释的POJO(我用&#39; MyResponse&#39;替换了你的&#39; Root&#39;类。 ):

@Root
public class Station {
    @Path("station")
    @Element(name = "abbr") String abbr;
}

@Root
public class MyResponse {
    @ElementList(entry = "station", inline = true)
    ArrayList<Station> stationsList;
}

即,我已使用@ElementList来注释父站点列表&#39;标签而不是普通@Element注释:对于这些情况,简单的xml框架同时具有@ElementList@ElementArray,而我更喜欢前者。

此外,因为它似乎是孩子的车站&#39;标签没有实际用途我已经&#34;跳过&#34;使用@Path注释来覆盖它们。

如果您想了解有关这些技巧的更多信息,请try looking into the Simple XML documentation on lists