2012-03-22 10 views
7

Sto lavorando con Java e SimpleXMLProblema molto facile da risolvere con SimpleXML. Cosa sto facendo di sbagliato?

ho bisogno di analizzare il file XML con 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> 

sto ottenendo questa eccezione:

03-22 16:02 : 35.072: WARN/System.err (1931): org.simpleframework.xml.core.ValueRequiredException: impossibile soddisfare @ org.simpleframework.xml.ElementList (data = false, empty = true, entry =, inline = false, name =, required = true, type = void) sul campo 'areas' public java.util.ArrayList com.Magazine.Page.areas per class com.Magazi ne.Pagina alla riga 1

La rivista ha una matrice di pagine, e ogni pagina ha una serie di aree, e ogni area ha una classe di azione, che ha un po 'più di contenuto. Il problema deve essere sulla matrice di aree, quindi è nella classe 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. 
    } 
} 

@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; 
} 

risposta

16

si deve mettere richiesto = false sul ArrayList di aree, alcune delle pagine del XML non dispongono di aree

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

Questo era, apparentemente se l'attributo 'required' era impostato su' true', la libreria stava sollevando un'eccezione se non veniva trovato un dato nodo. Grazie! –

+0

Congratz @NullPointerException! –

0

Questi errori vengono visualizzati quando si verificano errori nel file XML (come tag non modificato). Per qualcuno che ha lo stesso problema e è venuto a questo post.

Problemi correlati