2013-02-11 136 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