It is very simple to solve the problem with SimpleXML. What am I doing wrong?

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; //si llega aquÌ es que ha fallado. } } 

 @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; } 
+7
source share
2 answers

You must put the required = false in the ArrayList from the fields, some of the XML pages have no fields

  @Root public class Page { @Attribute String src; @Attribute String id; @Attribute String thumbnail; @ElementList (required=false) public ArrayList<Area> areas; } 
+16
source

These errors appear when I had errors in the XML file (for example, an invalid tag). For someone who has the same problem, and came to this post.

0
source

All Articles