有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用SimpleFramework反序列化此XML数组

我正试图用SimpleFramework反序列化这个XML数组,我一直遇到这个问题:

07-04 16:14:59.840 1681-1681/com.sampleapp D/SampleApp﹕ org.simpleframework.xml.core.ElementException: Element 'image' does not have a match in class com.todocodepathapp.api.models.Images at line 5

这是从API返回的xml数组:

<response>
<data>
    <images>
        <image>
            <url>http://24.media.tumblr.com/tumblr_lmdpfs0UcO1qbe5pxo1_1280.jpg</url>
            <id>9ik</id>
            <source_url>http://thecatapi.com/?id=9ik</source_url>
        </image>
        <image>
            <url>http://25.media.tumblr.com/tumblr_m6nl30dMm21qz59j6o1_1280.jpg</url>
            <id>MTU4NTM4NA</id>
            <source_url>http://thecatapi.com/?id=MTU4NTM4NA</source_url>
        </image>
        <image>
            <url>http://25.media.tumblr.com/tumblr_m1e6655aqv1qz85pko1_500.jpg</url>
            <id>avd</id>
            <source_url>http://thecatapi.com/?id=avd</source_url>
        </image>
        <image>
            <url>http://24.media.tumblr.com/tumblr_lz7cx55fOS1qbd47zo1_1280.jpg</url>
            <id>cu8</id>
            <source_url>http://thecatapi.com/?id=cu8</source_url>
        </image>
    </images>
</data>
</response>

这些是我正在使用的模型类(我有一种预感,我不应该使用Images.java,应该只有三个类):

响应。java

@Root(name = "response")
public class Response {

    @Element(name = "data")
    private Data mData;
    public Data getData() {
    return mData;
    }

}

数据。java

@Root(name = "data")
public class Data {

    @Element(name = "images")
    private Images mImages;
    public Images getImages() {
        return mImages;
    }

}

图像。java

@Root(name = "images")
public class Images {

    @ElementList(entry = "image")
    private List<Image> mImageList;
    public List<Image> getImageList() {
        return mImageList;
    }

}

图像。java

@Root(name = "image")
public class Image {

    @Element(name = "url")
    private String mUrl;
    public String getUrl() {
        return mUrl;
    }

    @Element(name = "id")
    private String mId;
    public String getId() {
        return mId;
    }

    @Element(name = "source_url")
    public String mSourceUrl;
    public String getSourceUrl() {
        return mSourceUrl;
    }

}

我应该如何做到这一点?我认为用条目@ElementList(entry = "image")添加注释可以解决这个问题


共 (1) 个答案

  1. # 1 楼答案

    我的直觉是正确的,我继续删除了类Images.java,并向我的Data.java模型类添加了以下注释:

    @ElementList(name = "images", entry = "image")
    private List<Image> mImages;
    public List<Image> getImages() {
        return mImages;
    }
    

    注意,我将图像模型类的@Root更改为@Element

    @Element(name = "image")
    public class Image {
    
        @Element(name = "url")
        private String mUrl;
        public String getUrl() {
            return mUrl;
        }
    
        @Element(name = "id")
        private String mId;
        public String getId() {
            return mId;
        }
    
        @Element(name = "source_url")
        public String mSourceUrl;
        public String getSourceUrl() {
            return mSourceUrl;
        }
    
    }