XML是:

<?xml version="1.0" encoding="UTF-8"?><products>
<product>

    <imagesurl>
    <imageurl><![CDATA[http://...]]></imageurl>
    <imageurl><![CDATA[http://...]]></imageurl>
    </imagesurl>

</product>
</products>


然后我有3个类来解析XML

main是:

@XmlRootElement(name = "products")
public class XmlModelRoot {

    private ArrayList<ProductModel> productModels;

    public ArrayList<ProductModel> getProductModels() {
        return productModels;
    }

    @XmlElement(name = "product")
    public void setProductModels(ArrayList<ProductModel> productModels) {
        this.productModels = productModels;
    }


}


Product class是:

@XmlRootElement(name = "product")
public class ProductModel {
private ArrayList<ImageUrlModel> imagesUrlModels;
public ArrayList<ImageUrlModel> getImagesUrlModels() {
        return imagesUrlModels;
    }

    @XmlElement(name = "imagesurl")
    public void setImagesUrlModels(ArrayList<ImageUrlModel> imagesUrlModels) {
        this.imagesUrlModels = imagesUrlModels;
    }
}


最后,我有URL列表的类:

@XmlRootElement(name = "imagesurl")
public class ImageUrlModel {

    private String imageurl;

    public String getImageurl() {
        return imageurl;
    }

    @XmlElement(name = "imagurl")
    public void setImageurl(String imageurl) {
        this.imageurl = imageurl;
    }
}


我的问题是,我应该收到带有至少2个URL的ArrayList<ImageUrlModel>,但是无论我有多少个imageurl标签,ArrayList<ImageUrlModel>列表的大小仅为1,并且只能访问最后一个标签。

我应该更改为在ArrayList<ImageUrlModel>中具有所有imageurl,在这种情况下,ImageUrlModel.size()应该为2

最佳答案

您可以将ProductModel POJO重新设计为以下类:

@XmlAccessorType(XmlAccessType.FIELD)
public class ProductModel {

    @XmlElementWrapper(name="imagesurl")
    @XmlElement(name = "imageurl")
    private ArrayList<String> imageurl;

    public ArrayList<String> getImagesUrlModels() {
        return imageurl;
    }

    public void setImagesUrlModels(ArrayList<String> imagesUrlModels) {
        this.imageurl = imagesUrlModels;
    }
}

10-07 15:52