如何使用JAXB注释创建子标签



我需要使用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>

请建议我这里缺少什么。

这是JAXB注释的重复。您正在寻找的是与@XmlElement注释一起使用的@XmlElementWrapper注释。

fwiw,Blaise Doughan关于Jaxb&amp;的博客文章Collection Properties还有一些有关处理集合的其他有用信息。

最新更新