加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:02:20 所属栏目:Java 来源:网络整理
导读:我有这样的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 我应该将此构造转换为具有嵌套项目列
我有这样的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读