2016-11-09 4 views
0

SimpleXML 2.1.0을 사용하여 웹 서비스에서 제공 한 XML 응답을 Java 객체에 매핑하려고합니다.하지만 막혔습니다.simplexml 2.1.0을 사용하여 xml을 java로 매핑하는 문제

<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> 

당신이 상상할 수 있듯이, 내가 자바 객체로 변환 할 데이터 만있는 자산 ID, assetnum, 설명, itemNum이, 위치가 SerialNum 및 siteid :

은 XML이다 .

지금 내가 무엇을 가지고 때까지 내가 할

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

오류입니다 : 내가 무슨 잘못을하고있는 중이 야

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 

?

답변

0

글쎄, 마침내 나는이 문제를 해결했다. 나는 세 가지 클래스를 생성 :

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

} 

지금은 내가 다른 두 개의 클래스로 「랩」자산을 얻을 전화를 할 때.

희망이 다른 사람이 감사합니다.