2016-11-29 61 views
0

我需要使用Jaxb註釋從我的java模型創建XML導出。 我需要的是下面的XML,其中包含多個實體的父實體應該作爲子樹的順序。如何使用JaxB註釋創建子標籤?

<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> 

請告訴我什麼是在這裏失蹤。

回答

1

這是JAXB Annotations的副本。您正在尋找的是與@XmlElement註釋一起使用的@XmlElementWrapper註釋。

FWIW,Blaise Doughan的博客文章JAXB & Collection Properties還提供了一些有關處理集合的有用信息。

+0

更好地接近「重複的原因,然後 – lexicore

+0

謝謝,是的,這是完全重複的,它解決了我的問題。 –