2016-11-09 4 views
0

Ich versuche, eine XML-Antwort von einem Web-Service zu einem Java-Objekt mit SimpleXML 2.1.0 zuordnen, aber ich bin fest.Ausgabe von XML in Java mit Simplex XML 2.1.0

Dies ist das xml:

<QueryINVAP-WS-ASSETResponse baseLanguage="ES" creationDateTime="2016-11-08T17:10:09-03:00"> 
<INVAP-WS-ASSETSet> 
    <ASSET rowstamp="265381811"> 
     <ASSETID>1529</ASSETID> 
     <ASSETNUM>2503</ASSETNUM> 
     <DESCRIPTION>POWER CHASSIS(CISCO)</DESCRIPTION> 
     <ITEMNUM>A000232</ITEMNUM> 
     <LOCATION>19281-05-A1</LOCATION> 
     <SERIALNUM>FDO1728YGGV</SERIALNUM> 
     <SITEID>TVD</SITEID> 
    </ASSET> 
</INVAP-WS-ASSETSet> 

Wie Sie sich vorstellen können, die nur Daten, die ich zu einem Java-Objekt konvertieren möchten sind AssetID, assetnum, Beschreibung, itemnum, Standort, SerialNum und siteid .

Bis jetzt ist dies, was ich habe:

@Root(name = "QueryINVAP-WS-ASSETResponse", strict = false) 
public class Activos { 

    @ElementList(inline = true, entry = "ASSET", type = Activo.class) 
    private List<Activo> activos; 

    @Root 
    class Activo { 

     @Attribute(name = "rowstamp") 
     public String rowstamp; 

     @Element(name = "ASSETID") 
     public Integer assetid; 

     @Element(name = "ASSETNUM") 
     public String assetnum; 

     @Element(name = "DESCRIPTION") 
     public String description; 

     @Element(name = "LOCATION") 
     public String location; 

     @Element(name = "SERIALNUM") 
     public String serialnum; 

     @Element(name = "SITEID") 
     public String siteid; 
    } 
} 

Der Fehler, den ich bekommen ist:

org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.ElementList(data=false, empty=true, entry=ASSET, inline=true, name=, required=true, type=class invap.invapgestionmovil.modelos.Activos$Activo) on field 'activos' private java.util.List invap.invapgestionmovil.modelos.Activos.activos for class invap.invapgestionmovil.modelos.Activos at line 1 

, was mache ich falsch?

Antwort

0

Nun, endlich habe ich das Problem gelöst. Ich habe drei Klassen:

@Root(name = "QueryINVAP-WS-ASSETResponse", strict=false) 
public class QueryINVAPWSASSETResponse { 

    @Element(name = "INVAP-WS-ASSETSet") 
    private INVAPWSASSETSet set; 
} 

@Root(name = "INVAP-WS-ASSETSet", strict=false) 
public class INVAPWSASSETSet { 

    @ElementList(inline=true, name = "ASSET") 
    private List<Activo> activos; 
} 

@Root(name = "ASSET", strict = false) 
public class Activo { 

    @Attribute(name = "rowstamp") 
    public String rowstamp; 

    @Element(name = "ASSETID") 
    public Integer assetid; 

    @Element(name = "ASSETNUM") 
    public String assetnum; 

    @Element(name = "DESCRIPTION") 
    public String description; 

    @Element(name = "LOCATION") 
    public String location; 

    @Element(name = "SERIALNUM") 
    public String serialnum; 

    @Element(name = "SITEID") 
    public String siteid; 

} 

Nun, wenn ich den Anruf ich den Vermögenswert erhalten "verpackt" mit den anderen zwei Klassen.

Hoffe, dass diese Hilfe anderen :) Grüße