您必须在区域的ArrayList上放置required = false,XML的某些页面没有区域
@Rootpublic class Page { @Attribute String src; @Attribute String id; @Attribute String thumbnail; @ElementList (required=false) public ArrayList<Area> areas;}解决方法
我正在使用Java和SimpleXML
我需要使用SimpleXML解析此XML文件:
<magazine 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' 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' 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' thumbnail='web.com/scripts/getImage.php?idMagazine=1&resource=thumbnail_003.jpg'/> </pages> </magazine>
我收到此异常:
03-22 16:02:35.072:WARN /System.err(1931):org.simpleframework.xml.core.ValueRequiredException:无法满足@org.simpleframework.xml.ElementList(data = false,empty = true,entry =,inline = false,name =,required = true,type = void)在字段“areas”上,第1行的类com.Magazine.Page的java.util.ArrayList com.Magazine.Page.areas
杂志有一系列页面,每个页面都有一个区域数组,每个区域都有一个动作类,其中包含更多内容。问题必须在Areas数组上,所以在Page类中。
@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. }}
@Rootpublic class Page { @Attribute String src; @Attribute String id; @Attribute String thumbnail; @ElementList public ArrayList<Area> areas;}
@Rootpublic class Area { @Attribute String id; @Element int top; @Element int left; @Element int width; @Element int height; @Element Action action;}
@Rootpublic class Action { @Attribute String type; String action;}