请在后台配置参数,参数名称:topads
编程语言 php java

JAXB实现XML和JAVA对象互相转换实例

java HTML我帮您 1年前  2010次浏览
一、简介
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/

发表评论