2013-02-11 117 views
3

注:如何映射JAXB的對象列表?

我不需要創建Java對象,因爲我只需要檢查 一些值,但我沒有找到任何解組它們作爲一種通用的 對象或樹或任何。像傑克遜的 JsonNode。如果這是可能的讓我知道,所以我可以避免所有這些混亂 與對象映射的一切。

現在的問題:

我已經來解組一個簡單的XML,但結果總是空。我試過不同的註釋,但如果它們沒有失敗,結果爲空。

這似乎是this question的相同情況,但使用相同的註釋不起作用。

XML是這樣的:

<ServiceList> 
    <Service Id="1" Code="c" Name="name" ServiceRegistrationStatusID="3" CheckedRegistrationStatusID="2" /> 
</ServiceList> 

,我解組這樣的:

ServiceList list = JAXB.unmarshal(new StringReader(xml), ServiceList.class); 

所以我創建了兩個內部類是這樣的:

@XmlRootElement 
public static class ServiceList { 
    private List<Service> services; 

    public List<Service> getServices() { return services; } 
    @XmlElementWrapper(name = "ServiceList") 
    @XmlElement(name = "Service") 
    public void setServices(List<Service> services) { this.services = services; } 

} 

@XmlRootElement(name = "Service") 
public static class Service { 
    private String id; 
    private String code; 
    private String name; 
    private String serviceRegistrationStatusID; 
    private String checkedRegistrationStatusID; 

    public String getId() { 
     return id; 
    } 
    @XmlAttribute(name = "Id") 
    public void setId(String id) { 
     this.id = id; 
    } 
    public String getCode() { 
     return code; 
    } 
    @XmlAttribute(name = "Code") 
    public void setCode(String code) { 
     this.code = code; 
    } 
    public String getName() { 
     return name; 
    } 
    @XmlAttribute(name = "Name") 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getServiceRegistrationStatusID() { 
     return serviceRegistrationStatusID; 
    } 
    @XmlAttribute(name = "ServiceRegistrationStatusID") 
    public void setServiceRegistrationStatusID(String serviceRegistrationStatusID) { 
     this.serviceRegistrationStatusID = serviceRegistrationStatusID; 
    } 

    public String getCheckedRegistrationStatusID() { 
     return checkedRegistrationStatusID; 
    } 
    @XmlAttribute(name = "CheckedRegistrationStatusID") 
    public void setCheckedRegistrationStatusID(String checkedRegistrationStatusID) { 
     this.checkedRegistrationStatusID = checkedRegistrationStatusID; 
    } 

} 

我正在解組靜態方法中的xml,所以我必須將pojos設置爲靜態。

對此有何幫助?

在此先感謝。

回答

5

試圖刪除@XmlElementWrapper(name = "ServiceList"),它應該工作

+1

簡單而有效!謝謝。 :) – Enrichman 2013-02-11 11:09:10