JAXBContext解析XML集合对象

@XmlElementWrapper 为数组元素或集合元素定义一个父节点。
如,类中有一元素为List items,若不加此注解,该元素将被映射为


这种形式,此注解可将这个元素进行包装,如:
@XmlElementWrapper(name=“items”)
@XmlElement(name=“item”)
public List items;
将会生成这样的XML样式:




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"?> 789 xxx xxx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值