天天看點

java對象和xml對象的互相轉換

java中提供了相關的api,jaxb可以實作java對象與xml對象互相轉換,話不多說,下面以實際的例子來說明兩者對象間的轉換:

1.java對象轉換為xml對象稱為Marshall(編排)

Student實體類:

package com.jaxb;

/*
 * author:lc_kykz
 * Description:Student Entity
 */
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Student {
	
	private String studentId;

	private String studentName;

	private String studentSex;

	//空構造函數,必須要寫
	public Student() {
		super();
	}

	public Student(String studentId, String studentName, String studentSex) {
		super();
		this.studentId = studentId;
		this.studentName = studentName;
		this.studentSex = studentSex;
	}

	public String getStudentId() {
		return studentId;
	}

	public String getStudentName() {
		return studentName;
	}

	public String getStudentSex() {
		return studentSex;
	}

	public void setStudentId(String studentId) {
		this.studentId = studentId;
	}

	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}

	public void setStudentSex(String studentSex) {
		this.studentSex = studentSex;
	}
}
           

junit測試方法:

<span style="white-space:pre">	</span>@Test
	public void test_Student() throws Exception{
		//建立一個JAXBContent對象,單例模式建立,
		JAXBContext ctx = JAXBContext.newInstance(Student.class);
		
		//建立一個編排
		Marshaller cm = ctx.createMarshaller();
		
		//建立一個Student執行個體
		Student student = new Student("001", "張三", "男");
		
		//将Student對象進行編排
		cm.marshal(student, System.out);
	}
           

測試方法輸出結果:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><student><studentId>001</studentId><studentName>張三</studentName><studentSex>男</studentSex></student>
           

2.xml對象轉換為java對象稱為unMarshall(反編排)

<span style="white-space:pre">	</span>@Test
	public void test() throws Exception {
		//定義一個xml格式的字元串
		String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><studentId>001</studentId><studentName>張三</studentName><studentSex>男</studentSex></student>";

		// 建立一個JAXBContent對象,單例模式建立,
		JAXBContext ctx = JAXBContext.newInstance(Student.class);

		// 建立一個反編排
		Unmarshaller um = ctx.createUnmarshaller();

		// 将xml對象進行反編排
		Student student = (Student)um.unmarshal(new StringReader(xml));
		
		System.out.println("<span style="font-family: Arial, Helvetica, sans-serif;">Student的ID為:</span>" + student.getStudentId());
	}
           

測試方法輸出結果:

Student的ID為:001

java對象和xml對象互相轉換就是這麼的簡單易懂,隻需要幾行核心代碼就可以解決!