如何使用 JaxB 注释创建子标签?
How to create child tag using JaxB annotations?
我需要使用 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 注释class
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 Annotations 的副本。您要查找的是与 @XmlElement
注释结合使用的 @XmlElementWrapper
注释。
FWIW,Blaise Doughan 在 JAXB & Collection Properties 上的博客 post 还有一些关于处理集合的其他有用信息。
我需要使用 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 注释class
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 Annotations 的副本。您要查找的是与 @XmlElement
注释结合使用的 @XmlElementWrapper
注释。
FWIW,Blaise Doughan 在 JAXB & Collection Properties 上的博客 post 还有一些关于处理集合的其他有用信息。