我有这样的xml构造,需要使用JAXB转换成java对象:

<elements>
    <elemet>
        <type></type>
        <property1></property1>
        <property2></property2>
        <items>
            <item>
                <id></id>
                <name></name>
            </item>
            ...
            <item>
                <id></id>
                <name></name>
            </item>
        </items>
    </element>
</elements>

我不应该将这种构造转换为具有嵌套项目列表的元素,而是转换为每个项目一个的多个元素。这是Element类的示例:
class Element {
    Integer type;
    String property1;
    String property2;
    Integer itemId;
    String itemName;
}

我想在解组后得到它们的清单。所有列表元素的类型,属性1和属性2值都应该相同。
是否有可能使用JAXB解决此问题?

最佳答案

您将需要定义一个自定义XmlAdapter。您的情况中最复杂的部分是您要将一个XML element映射到多个Java Element对象。这意味着,在Java中,需要配置XmlAdapter以收集Element对象。假设您的示例XML片段是文档的一部分:

<document>
   <elements>
      <element>
          ....
      </element>
   <elements>
</document>

然后,您将需要为Java XmlAdapter类中的List<Element>字段配置Document:
class Document {
     @XmlJavaTypeAdapter(CustomAdapter.class)
     List<Element> elements;
}

然后,您的CustomAdapter类可以接收Element对象的列表(与带有嵌套项的实际XML结构相对应),并生成具有所需结构的Element列表。

例如,检查JAXB XmlAdapter – Customized Marshaling and Unmarshaling

10-04 22:28
查看更多