@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同時寫入了文件和標準輸出(控制檯):




發佈了33 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章