如,类中有一元素为List items,若不加此注解,该元素将被映射为
<items>...</items>
<items>...</items>
这种形式,此注解可将这个元素进行包装,如:
@XmlElementWrapper(name="items")
@XmlElement(name="item")
public List items;
将会生成这样的XML样式:
<items>
<item>...</item>
<item>...</item>
</items>
Demo如下:
实体类一(定义一个被包含的子项Item):
- package org.ywzn.po;
- import javax.xml.bind.annotation.XmlAttribute;
- public class Item {
- private String infoType;
- private String nodeId;
- private String resultCode;
- private String resultString;
- public Item() {
- super();
- }
- public Item(String infoType,String nodeId,String resultCode,String resultString) {
- super();
- this.infoType = infoType;
- this.nodeId = nodeId;
- this.resultCode = resultCode;
- this.resultString = resultString;
- }
- @XmlAttribute(name = "InfoType")
- public String getInfoType() {
- return infoType;
- }
- public void setInfoType(String infoType) {
- this.infoType = infoType;
- }
- public String getNodeId() {
- return nodeId;
- }
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
- public String getResultCode() {
- return resultCode;
- }
- public void setResultCode(String resultCode) {
- this.resultCode = resultCode;
- }
- public String getResultString() {
- return resultString;
- }
- public void setResultString(String resultString) {
- this.resultString = resultString;
- }
- }
实体类二(定义一个有List集合的实体类):
- package org.ywzn.po;
- import java.util.List;
- import javax.xml.bind.annotation.XmlAttribute;
- import javax.xml.bind.annotation.XmlElement;
- import javax.xml.bind.annotation.XmlElementWrapper;
- import javax.xml.bind.annotation.XmlRootElement;
- @XmlRootElement
- public class Message {
- private String version;
- private Head head;
- private List<Item> items;
- @XmlAttribute(name="version")
- public String getVersion() {
- return version;
- }
- public void setVersion(String version) {
- this.version = version;
- }
- @XmlElement(name="Head")
- public Head getHead() {
- return head;
- }
- public void setHead(Head head) {
- this.head = head;
- }
- public List<Item> getItems() {
- return items;
- }
- @XmlElementWrapper(name="Items")
- @XmlElement(name="Item")
- public void setItems(List<Item> items) {
- this.items = items;
- }
- }
- package org.ywzn.main;
- import java.util.ArrayList;
- import java.util.List;
- import javax.xml.bind.JAXBContext;
- import javax.xml.bind.JAXBException;
- import javax.xml.bind.Marshaller;
- import org.ywzn.po.Head;
- import org.ywzn.po.Item;
- import org.ywzn.po.Message;
- import org.ywzn.po.Parameters;
- import org.ywzn.po.Room;
- public class Java2XMLMany {
- public static void main(String[] args) {
- // <?xml version='1.0' encoding='UTF-8' standalone='no' ?> <Message
- // version='1.0'><Header Time='2015-05-22 10:34:27' MessageType='LOGIN'
- // BusinessId='B730EB39-CEFF-4a38-B633-D8936EB8AEF7' SessionId='936'
- // /><Parameters> <items Sum='1' Offset='1' Cur='1'> <item
- // Infotype='LogUser'> <PassWord
- // >D41D8CD98F00B204E9800998ECF8427E</PassWord></item> </items>
- // </Parameters> </Message>
- // TODO Auto-generated method stub
- Item item = new Item("LOGIN","789","xxx","xxx");
- List<Item> list = new ArrayList<Item>();
- list.add(item);
- Head head = new Head("2015-05-21 16:46:14","LOGIN","8D24CE2B-5");
- Parameters parameters = new Parameters(list);
- // Message message = new Message(head,"1.0",parameters);
- Message message = new Message();
- message.setVersion("1.0");
- message.setHead(head);
- message.setItems(list);
- try {
- JAXBContext context = JAXBContext.newInstance(Message.class);
- Marshaller createMarshaller = context.createMarshaller();
- createMarshaller
- .setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true);// 是否格式化生成的xml串
- createMarshaller.marshal(message,System.out);
- } catch (JAXBException e) {
- e.printStackTrace();
- }
- }
- }
输出:
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <message version="1.0">
- <Head businessId="8D24CE2B-5" MessageType="LOGIN" Time="2015-05-21 16:46:14"/>
- <Items>
- <Item InfoType="LOGIN">
- <nodeId>789</nodeId>
- <resultCode>xxx</resultCode>
- <resultString>xxx</resultString>
- </Item>
- </Items>
- </message>