`
lganggang131
  • 浏览: 15019 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
最近访客 更多访客>>
社区版块
存档分类
最新评论

OXM(Object XML Mapping)技术——JAXB实现对象与XML之间的相互转换

阅读更多

今天上午接着昨天的内容继续讲解XML相关的技术,重点讲解了JAXB (Java Architecture XML Bind的缩写)
使用JAXB实现XML与java对象的映射,这也是JDK1.6的新特性之一,我们可以把对象和XML之间的映射成为OXM
(Object XML Mapping),JAXB原来为JavaEE的一部分,在JDK1.6中,Sun把JAXB放到了Java SE中,用JDK1.5中
的新特性Annotation来标识要绑定的类和属性等。下面贴一个例子

package com.future;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Calendar;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

public class JAXBTest {

/*
* 1、marshal java object----document
* 2、gegXMLFromObject
* 3、unmarshal document-----java object
*/
public static void main(String[] args) {
try {
JAXBContext context = JAXBContext.newInstance(Person.class);

gegXMLFromObject(context);
} catch (JAXBException e) {

e.printStackTrace();
}

}

public static void gegXMLFromObject(JAXBContext context) {
try {
// 下面代码演示将对象转变为xml Object------XML
Address address = new Address("China", "Beijing", "Haidian",
"北京大学", "100871");
Person p = new Person(Calendar.getInstance(), "zhansan", address,
Gender.MALE, "professor");


//指定对应的xml文件
FileOutputStream fw = new FileOutputStream("person.xml");
Marshaller m = context.createMarshaller();

//将对象转换为对应的XML文件
m.marshal(p, fw);

} catch (JAXBException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
}

public static void getObjectFromXML(JAXBContext context) {

try {
// 下面代码演示将上面生成的xml转换为对象 XML------Object
FileReader fr = new FileReader("person.xml");
Unmarshaller um = context.createUnmarshaller();

Person p2 = (Person) um.unmarshal(fr);
System.out.println("Country:" + p2.getAddress().getCountry());
} catch (FileNotFoundException e) {

e.printStackTrace();
} catch (JAXBException e) {

e.printStackTrace();
}
}
}

@XmlRootElement
// 表示person是一个根元素
class Person {

@XmlAttribute
String name;

@XmlElement
Calendar birthDay;

@XmlElement
Address address;

@XmlElement
Gender gender;

@XmlElement
String job;

public Address getAddress() {
return address;
}

public Person() {
}

public Person(Calendar birthDay, String name, Address address,
Gender gender, String job) {
this.birthDay = birthDay;
this.name = name;
this.address = address;
this.gender = gender;
this.job = job;
}
}

enum Gender {
MALE("male"),
FEMALE("female") ;

private String name = null;
private Gender(String name){
this.name = name;
}
@Override
public String toString(){
return name;
}
}

class Address {
@XmlAttribute
String country;
@XmlElement
String state;
@XmlElement
String city;
@XmlElement
String street;
String zipcode;

public Address() {
}

public Address(String country, String state, String city, String street,
String zipcode) {
this.country = country;
this.state = state;
this.city = city;
this.street = street;
this.zipcode = zipcode;
}

public String getCountry() {
return country;
}
}

测试成功后 ,在工程根目录下生成的person.xml文件如下

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person name="zhansan">
<birthDay>2011-03-15T00:08:51.437+08:00</birthDay>
<address country="China">
<state>Beijing</state>
<city>Haidian</city>
<street>北京大学</street>
</address>
<gender>MALE</gender>
<job>professor</job>
</person>

分享到:
评论

相关推荐

    JAVA6新特性介绍

    我们把对象与关系数据库之间的映射称为ORM, 其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping). 原来JAXB是JavaEE的一部分,在JDK6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。JDK6中自带的这个...

    spring使用OXM进行对象XML映射解析

    主要介绍了spring使用OXM进行对象XML映射解析,具有一定借鉴价值,需要的朋友可以参考下

    二进制XML存储方案

    · 是不是可以提供一个oxm模型,完成BinXML与Object之间的直接映射,现在这个映射工作还是人工代码实现的,譬如:GetString/GetLong,等等。应该可以完善一个映射机制,自动根据定义好的类型进行转换;

    spring-oxm-3.2.8.jar

    Spring oxm:Spring对于object/xml映射的支持,可以让JAVA与XML之间来回切换; spring-oxm是操作XML文件:生成,修改节点的完美第三方库

    spring-oxm:Spring3 JAXB编组和反编组

    $ mvn干净$ MVN测试 #step3:-如果要在从分支机构签出后进行测试,请运行Client.java,它将把Java对象编组到文件“ C:/employee.xml”,并出于演示目的在同一程序中取消编组同一对象并转到打印值。

    spring-oxm-3.2.9.RELEASE.jar

    Spring oxm:Spring对于object/xml映射的支持,可以让JAVA与XML之间来回切换; spring-oxm是操作XML文件:生成,修改节点的完美第三方库

    castor-1.2解析XML

    是个不错的XML解析工具。 1、xml格式文件的用法,我们学过的xml有两种用法:一,作为配置文件。二、作为数据存储文件。...2、这个工具的功能:能够把xml文件存储的数据和pojo对象进行映射。我们暂且把这种叫做:OXM。

    spring-oxm-5.3.15-API文档-中英对照版.zip

    赠送jar包:spring-oxm-5.3.15.jar; 赠送原API文档:spring-oxm-5.3.15-javadoc.jar; 赠送源代码:spring-oxm-5.3.15-sources.jar; 赠送Maven依赖信息文件:spring-oxm-5.3.15.pom; 包含翻译后的API文档:spring...

    spring-oxm源码

    spring-oxm源码,可以直接导入Eclipse里面!

    spring-oxm-5.3.10-API文档-中文版.zip

    赠送jar包:spring-oxm-5.3.10.jar; 赠送原API文档:spring-oxm-5.3.10-javadoc.jar; 赠送源代码:spring-oxm-5.3.10-sources.jar; 赠送Maven依赖信息文件:spring-oxm-5.3.10.pom; 包含翻译后的API文档:spring...

    spring-oxm-5.0.8.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-oxm-5.0.8.RELEASE.jar; 赠送原API文档:spring-oxm-5.0.8.RELEASE-javadoc.jar; 赠送源代码:spring-oxm-5.0.8.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-oxm-5.0.8.RELEASE.pom;...

    spring-oxm-5.3.15-API文档-中文版.zip

    赠送jar包:spring-oxm-5.3.15.jar; 赠送原API文档:spring-oxm-5.3.15-javadoc.jar; 赠送源代码:spring-oxm-5.3.15-sources.jar; 赠送Maven依赖信息文件:spring-oxm-5.3.15.pom; 包含翻译后的API文档:spring...

    Spring.3.x企业应用开发实战(完整版).part2

    《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用...

    Spring3.x企业应用开发实战(完整版) part1

    《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用...

    spring-oxm-4.2.8.RELEASE-API文档-中文版.zip

    赠送jar包:spring-oxm-4.2.8.RELEASE.jar; 赠送原API文档:spring-oxm-4.2.8.RELEASE-javadoc.jar; 赠送源代码:spring-oxm-4.2.8.RELEASE-sources.jar; 包含翻译后的API文档:spring-oxm-4.2.8.RELEASE-...

    spring-oxm-4.0.0.RELEASE.jar

    spring-oxm-4.0.0.RELEASE.jar

    spring-oxm-4.1.0.RELEASE.jar

    spring-oxm-4.1.0.RELEASE.jar

    spring-oxm-5.2.15.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-oxm-5.2.15.RELEASE.jar; 赠送原API文档:spring-oxm-5.2.15.RELEASE-javadoc.jar; 赠送源代码:spring-oxm-5.2.15.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-oxm-5.2.15.RELEASE....

    spring-oxm-5.0.5.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-oxm-5.0.5.RELEASE.jar; 赠送原API文档:spring-oxm-5.0.5.RELEASE-javadoc.jar; 赠送源代码:spring-oxm-5.0.5.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-oxm-5.0.5.RELEASE.pom;...

    spring-oxm-4.2.2.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-oxm-4.2.2.RELEASE.jar; 赠送原API文档:spring-oxm-4.2.2.RELEASE-javadoc.jar; 赠送源代码:spring-oxm-4.2.2.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-oxm-4.2.2.RELEASE.pom;...

Global site tag (gtag.js) - Google Analytics