jaxb实现java对象与xml之间转换_JAXB实现XML和JAVA对象互相转换实例

一、简介

1、概念是什么:(Java Architecture for XML Binding) 是一个业界的标准,即是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。有多种实现。

2、JAXB中有什么:包含“xjc”工具和一个“schemagen”工具。

“xjc”工具可以用来将XML模式或其他类型模式文件(Java 1.6试验性地支持RELAX NG,DTD以及WSDL)转换为Java类。Java类使用javax.xml.bind.annotation包下的Java 标注,例如@XmlRootElement和@XmlElement。XML列表序列表示为java.util.List类型的属性, 通过JAXBContext可以创建Marshallers(将Java对象转换成XML)和Unmarshallers(将XML解析为Java对象)。

代码:

package com.html580.jaxb.bean;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

import javax.xml.bind.annotation.XmlType;

@XmlRootElement

@XmlType(propOrder = { "id", "name", "age" })

public class Student {

// 用户ID

private Integer id;

// 姓名

private String name;

// 年龄

private Integer age;

@XmlElement

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

@XmlElement

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@XmlElement

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

@Override

public String toString() {

return "Student ";

}

}

package com.html580.jaxb.bean;

import java.io.StringReader;

import java.io.StringWriter;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.Marshaller;

import javax.xml.bind.PropertyException;

import javax.xml.bind.Unmarshaller;

public class StudentTest {

public static void main(String<> args) {

Student student = new Student();

student.setId(100);

student.setName("suo");

student.setAge(29);

try {

StringWriter sw = new StringWriter();

JAXBContext jaxbContext = JAXBContext.newInstance(Student.class);

Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

jaxbMarshaller.marshal(student, System.out); //把对象转成XML输出到控制台

jaxbMarshaller.marshal(student, sw);

System.out.println(sw.toString());

StringReader reader = new StringReader(sw.toString());

Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();

student = (Student)jaxbUnmarshaller.unmarshal(reader); //把xml成java对象

System.out.println(student);

} catch (PropertyException e) {

e.printStackTrace();

} catch (JAXBException e) {

e.printStackTrace();

}

}

}

总结:在将java转换成XML时通常要经过一下几个步骤。

1.通过映射的类创建XMLContext上下文对象,其中参数为映射的类。

JAXBContext context = JAXBContext.newInstance(Student.class)

2. 通过JAXBComtext上下文对象的createMarshaller()方法,创建一个对象java格式转化成

XML的格式,代码如下

Marshaller m = context.createMarshaller();

3. 最后,将JAVA对象转换到制定的输出位置,其中的student为java对象。

m.marshal(student,xmlFile);

XML转换成JAVA对象(ummarshal)

XML转换成JAVA对象的步骤与之相反。

总结:将XML转换成JAVA对象时候通常要经过以下几个步骤

1. 通过映射的类创建XMLComtext上下文对象,其中参数为映射的类。

JAXBContext context = JAXBContext.newInstance(Student.class);

2. 通过JAXBContext上下文对象创建createUnmarshaller()方法,创建XML转换成JAVA对象

的格式。

Unmarshall m = context.createUnmarshaller();

3. 最后,将XML转换成对映的类,转换后需要强制性转换成映射的类

Student student = (Student)m.unmarshaller(xmlFile);

http://jaxb.java.net/guide/

http://jaxb.java.net/tutorial/

你可能感兴趣的:(jaxb实现java对象与xml之间转换_JAXB实现XML和JAVA对象互相转换实例)