编程语言
首页 > 编程语言> > java – 使用JAXB解组嵌套的xml项列表

java – 使用JAXB解组嵌套的xml项列表

作者:互联网

我有这样的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; 
}

我想在解组后得到它们的清单.对于所有列表元素,Type,property1和property2值应该相同.
有没有可能使用JAXB解决这个问题?

解决方法:

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

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

然后,您需要为List< Element>配置XmlAdapter. Java Document类中的字段:

class Document {
     @XmlJavaTypeAdapter(CustomAdapter.class)
     List<Element> elements;
}

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

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

标签:java,xml,jaxb2
来源: https://codeday.me/bug/20190711/1437056.html