当前位置: 首页 > 知识库问答 >
问题:

如何为JAXB映射对象列表?

蒋烨然
2023-03-14

注意:

我不需要创建java对象,因为我只需要检查一些值,但我没有找到任何东西来取消将它们作为通用对象或树或任何东西。像杰克逊的 JsonNode。如果可能的话,让我知道,这样我就可以避免所有这些混乱的对象来映射一切。

现在的问题是:

我不得不解组一个简单的xml,但是结果总是空的。我已经尝试了不同的注释,但是如果它们没有失败,结果就是null。

这似乎是这个问题的相同情况,但使用相同的注释是行不通的。

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设为静态。

对此有帮助吗?

提前致谢。

共有1个答案

姚鹤龄
2023-03-14

尝试删除@XmlElementWrapper(name=“ServiceList”),它应该可以工作

 类似资料:
  • 假设我有这样的映射: 现在,我需要将子列表映射到子列表,但它们都有相同的父对象。我希望这样做: 但不管用,有机会做吗?

  • 我有两个数据集,让我们考虑从JAXb转换器生成的数据A和数据B。检查以下代码段, 这些是生成的JaxB对象,带有getter[for all] /setter[for nonCollection field](在上面的代码中没有提到)。当我尝试使用Dozer API映射时,只有父对象被映射,但在映射集合时会得到空指针异常。 尝试了以下映射方法来解决映射问题, 但上述方法的缺陷在于,如果对象包含嵌套

  • 问题内容: 我们有一张有很多列的大桌子。移至MySQL Cluster后,由于以下原因无法创建表: 错误1118(42000):行大小太大。不包括BLOB在内的已使用表类型的最大行大小为14000。这包括存储开销,请查阅手册。您必须将某些列更改为TEXT或BLOB 举个例子: 这是用于存储配置参数的表。我在想,我们可以将一些列合并为一个列,并将其存储为JSON对象,然后将其转换为Java对象。 例

  • 我想使用Java流按对用户列表进行分组。 例如,我有。

  • 我希望我已经提供了所需的所有信息。在这个专家小组中,请大家在这个问题上帮助我。任何小小的帮助对我都是最大的帮助。提前感谢您的帮助。