I work with Java and SimpleXML
I need to parse this XML file using SimpleXML:
<magazine title="NΛmero 1" id="1"> <description>yutyutyu</description> <miniature>http://web.com/scripts/getImage.php?idMagazine=1&resource=miniature.jpg</miniature> <summary>2</summary> <pages> <page src="http://web.com/scripts/getImage.php?idMagazine=1&resource=page_001.jpg" id="1" thumbnail="http://web.com/scripts/getImage.php?idMagazine=1&resource=thumbnail_001.jpg"> <areas> <area id="1"> <top>188</top> <left>204</left> <width>399</width> <height>319</height> <action type="openBrowser">http://www.web.com</action> </area> <area id="2"> <top>188</top> <left>204</left> <width>399</width> <height>319</height> <action type="openBrowser">http://www.web.com</action> </area> </areas> </page> <page src="http://web.com/scripts/getImage.php?idMagazine=1&resource=page_002.jpg" id="2" thumbnail="web.com/scripts/getImage.php?idMagazine=1&resource=thumbnail_002.jpg"/> <page src="http://web.com/scripts/getImage.php?idMagazine=1&resource=page_003.jpg" id="3" thumbnail="web.com/scripts/getImage.php?idMagazine=1&resource=thumbnail_003.jpg"/> </pages> </magazine>
I get this exception:
03-22 16: 02: 35.072: WARN / System.err (1931): org.simpleframework.xml.core.ValueRequiredException: cannot satisfy @ org.simpleframework.xml.ElementList (data = false, empty = true, entry = , inline = false, name =, required = true, type = void) in the 'areas' field public java.util.ArrayList com.Magazine.Page.areas for class com.Magazine.Page on line 1
The magazine has an array of pages, and each page has an array of areas, and each area has an action class that has some more content. The problem should be in an array of areas, so it is in the page class.
@Root (name="magazine") public class FullMagazine { @Attribute String title; @Attribute String id; @Element String description; @Element String miniature; @Element int summary; @ElementList public ArrayList<Page> pages; public String getTitle() { return title; } public String getId() { return id; } public String getDescription() { return description; } public Bitmap getMiniature() { return Util.getRemoteBitmap(miniature); } public static FullMagazine Load(String xml){ Serializer serializer = new Persister(); try{ return serializer.read(FullMagazine.class, xml); }catch (Exception e) {e.printStackTrace();} return null;
@Root public class Page { @Attribute String src; @Attribute String id; @Attribute String thumbnail; @ElementList public ArrayList<Area> areas; }
@Root public class Area { @Attribute String id; @Element int top; @Element int left; @Element int width; @Element int height; @Element Action action; }
@Root public class Action { @Attribute String type; String action; }
Alex salom
source share