【问题标题】:How to create child tag using JaxB annotations? [duplicate]如何使用 JaxB 注释创建子标签? [复制]
【发布时间】:2016-11-29 11:21:02
【问题描述】:

我需要使用 Jaxb 注释从我的 java 模型创建 XML 导出。 我需要的是以下 xml,其中是包含多个实体的父实体,这些实体应该作为子顺序树。

<order>
<staffId>1</staffId>
<status>ACTIVE</status>
<id>12</id>
<name>Order 1</name>
     <itemList>
         <item>Item 1</item>
         <item>Item 2</item>
         <item>Item 3</item>
     </itemList>
</order>

以下是我的 JaxB 注释类

import java.io.Serializable;
import java.util.*;

import javax.xml.bind.annotation.*;

@XmlRootElement
@XmlType(propOrder = {"staffId", "status", "id", "name", "itemList"})
public class Order implements Serializable {

    private static final long serialVersionUID = 1L;
    private int id;
    private int staffId;
    private String status;
    private String name;
    private List<String> itemList = new ArrayList<>();

    @XmlElement
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    @XmlElement
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @XmlElement
    public int getStaffId() {
        return staffId;
    }
    public void setStaffId(int staffId) {
        this.staffId = staffId;
    }
    @XmlElement
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @XmlElement
    public List<String> getItemList() {
        return itemList;
    }
    public void setItemList(List<String> itemList) {
        this.itemList = itemList;
    }
}

但我得到的输出如下所示,其中项目列表与订单处于相同的层次结构中。

<order>
    <staffId>1</staffId>
    <status>ACTIVE</status>
    <id>12</id>
    <name>Order 1</name>
    <itemList>Item 1</itemList>
    <itemList>Item 2</itemList>
    <itemList>Item 3</itemList>
</order>

请告诉我这里缺少什么。

【问题讨论】:

    标签: java xml jaxb javax.xml


    【解决方案1】:

    这是JAXB Annotations 的副本。您正在寻找的是与 @XmlElement 注释结合使用的 @XmlElementWrapperannotation。

    FWIW,Blaise Doughan 在JAXB & Collection Properties 上的博文提供了其他一些关于处理集合的有用信息。

    【讨论】:

    • 那么最好用“重复的原因”来结束。
    • 谢谢,是的,这是完全相同的副本,它解决了我的问题。
    猜你喜欢
    • 2010-10-03
    • 1970-01-01
    • 2017-08-15
    • 2015-05-20
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2021-07-10
    • 2023-04-01
    相关资源
    最近更新 更多