XML is :
<?xml version="1.0" encoding="UTF-8"?><products>
<product>
<imagesurl>
<imageurl><![CDATA[http://...]]></imageurl>
<imageurl><![CDATA[http://...]]></imageurl>
</imagesurl>
</product>
</products>
Then i have 3 classes to parse XML
:
The main
is:
@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;
}
}
The Product class
is:
@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;
}
}
And finaly i have Class for list of URLs :
@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;
}
}
My issue is, that i should receive ArrayList<ImageUrlModel>
with at last 2 urls, but no matter how many imageurl tags i have, the size of ArrayList<ImageUrlModel>
list is only 1 and there is only last tag accessible.
What should i change to have all imageurl in ArrayList<ImageUrlModel>
, to in this case ImageUrlModel.size()
should be 2
.
You can redesign your ProductModel
POJO to the below class:
@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;
}
}
Try this:
@XmlRootElement(name = "product")
public class ProductModel {
private ArrayList<ImageUrlModel> imagesUrlModels;
public ArrayList<ImageUrlModel> getImagesUrlModels() {
return imagesUrlModels;
}
@XmlElementWrapper(name = "imagesurl")
@XmlElement(name = "imageurl")
public void setImagesUrlModels(ArrayList<ImageUrlModel> imagesUrlModels) {
this.imagesUrlModels = imagesUrlModels;
}
}
public class ImageUrlModel {
private String value;
public String getValue() {
return value;
}
@XmlValue
public void setValue(String value) {
this.value = value;
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.