微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

@XmlElementWrapper

在JAXB标准中,@XmlElementWrapper注解表示生成一个包装器元素。该注释支持两种形式的序列化。


注意: @XmlElementWrapper仅允许出现在集合属性上。


第一步:定义将要转化的Java对象

package jijian.test;

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 Customer {
	String[] names;
	int age;
	int id;
	
	//使用@XmlElementWrapper注解后,将会在原xml结点上再包装一层xml
	@XmlElementWrapper(name = "allnames")
	@XmlElement(name = "myname")
	public String[] getNames() {
		return names;
	}
	
	public void setNames(String[] names) {
		this.names = names;
	}
	
	@XmlElement
	public int getAge() {
		return age;		
	}
	
	public void setAge(int age) {
		this.age = age;
	}
	
	@XmlAttribute
	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	
	@Override
	public String toString() {
		return "Customer [id = " + id + ",names = " + names + ",age = " + age + "]";
	}
}

第二步:生成xml文件并写入文件

package jijian.test;

import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

public class Object2XmlDemo {
	public static void main(String[] args) throws JAXBException {
		
		Customer customer = new Customer();
		customer.setId(100);
		customer.setNames(new String[]{"name-a","name-b","name-c"});
		customer.setAge(25);
		
		File file = new File("D:\\file.xml");
		JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
		Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
		jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true);	
		jaxbMarshaller.marshal(customer,file);
		jaxbMarshaller.marshal(customer,System.out);
	}
}

生成的xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="100">
    <age>25</age>
    <allnames>
        <myname>name-a</myname>
        <myname>name-b</myname>
        <myname>name-c</myname>
    </allnames>
</customer>


这个示范代码生成的xml同时写入了文件和标准输出(控制台):





原文地址:https://www.jb51.cc/xml/297372.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。