`
leiwuluan
  • 浏览: 707240 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

JDK6的新特性之二: JAXB2

阅读更多

  使用JAXB2来实现对象与XML之间的映射 JAXBJava Architecture for XML Binding的缩写,先来说一说这个是用来做什么的吧。这个工具就像我们生活中神奇的温度。它可以把水把变成冰,也可以把冰变成水。而这个工具就像温度一样的神奇可以把java的对象和xml文件进行互转。你很聪明,也就是说可把xml文件转为java对象,也可以把java对象转为xml文件。一种对象与关系数据库之间的映射称为ORM,聪明的你就会想到可以把对象和xml之间的映射称为OXM(Object XML Mapping). Xml文件在j2ee开发中使用得就每天要吃那样的频繁。Sun还老套把这个工具放到了j2se中去了。这里说到的是2.0那你一定会也想到有一个1.0吧。那就说一说2.01.0的区别吧。很对不仅有一字之差12之差。还有2.0加入了一些功能。JAXB2(JSR 222)JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。闲话不多说太多了,说多了你就会觉得没完没了 

好开始看一看下面这个实例吧。

package jaxb2;

 

import java.io.FileReader;

import java.io.FileWriter;

import java.util.Calendar;

 

import javax.xml.bind.JAXBContext;

import javax.xml.bind.Marshaller;

import javax.xml.bind.Unmarshaller;

import javax.xml.bind.annotation.XmlRootElement;

public class JAXB2Test {

 

       /**

        * @param args

        * @throws Exception

        */

       public static void main(String[] args) throws Exception {

              // TODO Auto-generated method stub

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

              //下面代码演示将对象转变为xml

              Marshaller m = context.createMarshaller();

              Address address = new Address("China","Beijing","Beijing","HuiLongGuan West","20090806");

              Student p = new Student(200800,"leiwuluan",address,95.5,1);

              FileWriter fw = new FileWriter("Student.xml");

              m.marshal(p,fw);

 

              //下面代码演示将上面生成的xml转换为对象

              FileReader fr = new FileReader("person.xml");

              Unmarshaller um = context.createUnmarshaller();

              Student p2 = (Student)um.unmarshal(fr);

              System.out.println("Country:"+p2.getAddress().getCountry());

       }

}

 

 

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

class Student {   

    @javax.xml.bind.annotation.XmlElement

    Integer studentId; //studentId将作为Student的子元素

 

    @javax.xml.bind.annotation.XmlAttribute

    String studentName; //studentName将作为Student的的一个属性

 

    @javax.xml.bind.annotation.XmlElement

    Address address; //address将作为Student的子元素

 

    @javax.xml.bind.annotation.XmlElement

    Double score; //gender将作为Student的子元素

 

    @javax.xml.bind.annotation.XmlElement

    Integer grade; //job将作为Student的子元素

 

    public Student(){

    }

  

       public Student(Integer studentId, String studentName, Address address,

                     Double score, Integer grade) {

              super();

              this.studentId = studentId;

              this.studentName = studentName;

              this.address = address;

              this.score = score;

              this.grade = grade;

       }

 

       public Address getAddress() {

        return address;

    }

}

 

class Address {

    @javax.xml.bind.annotation.XmlAttribute

    String country;

    @javax.xml.bind.annotation.XmlElement

    String state;

    @javax.xml.bind.annotation.XmlElement

    String city;

    @javax.xml.bind.annotation.XmlElement

    String street;

    String zipcode; //由于没有添加@XmlElement,所以该元素不会出现在输出的xml

 

    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;

    }

}

 

都说将对象转为xml文件了。所以你就可以得到一个名为Student.xml文件了。里面的内容不用猜的跟平常文件一样的。就像下面一模一样的。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<student studentName="leiwuluan">

    <studentId>200800</studentId>

    <address country="China">

       <state>Beijing</state>

       <city>Beijing</city>

       <street>HuiLongGuan West</street>

    </address>

    <score>95.5</score>

    <grade>1</grade>

</student>

 

做到这里聪明的你也会了吧。你一定想问还有没有别的东西也可以实现这个呢。

你不问我也会对你说还有,真的有。这只是其中的一种而以。

XMLBeansCastor

这两个也可以。

手累了不多写了。认真看一遍就会了。不要跳页去看,如果这样你永远也不会。

看书时,你说你看不懂。其实你不是看不懂,而是你没有用心看。而是上页没有看就看下一而,记住看书不是在跳台阶,可以隔着跳。。。不说多了。

分享到:
评论

相关推荐

    java jdk1.6 新特性 jaxb2 demo

    在这个"jaxb2 demo"中,我们将探讨JDK 1.6中的一些重要特性以及JAXB 2.0的相关应用。 1. **泛型增强**: Java JDK 1.6对泛型的支持进行了增强,包括类型推断(Type Inference)和泛型通配符的改进。类型推断使得在...

    JDK6的新特性

    Java Development Kit (JDK) 6是Java编程语言的一个重要版本,它引入了许多新特性,极大地提升了开发效率和应用程序性能。以下将详细阐述JDK6的一些核心新特性: 1. **改进的编译器(Project Coin)** JDK 6中的...

    JDK+6.0+ZH+API.chm.zip

    JDK6的新特性之二_使用JAXB2来实现对象与XML之间的映射 JDK6的新特性之三_理解StAX JDK6的新特性之四_使用Compiler API JDK6的新特性之五_轻量级HttpServer JDK6的新特性之七_用Console开发控制台程序 JDK6的...

    JDK6的新特性之一.doc

    ### JDK6的新特性详解 #### 一、Desktop类与SystemTray类 ##### Desktop类 在JDK6中,AWT库新增了`Desktop`类,这是一个非常实用且功能丰富的类,它允许开发者轻松地执行一系列与桌面环境交互的操作。`Desktop`类...

    JDK1.6的九大新特性

    JDK1.6的九大新特性 九:Common Annotations 八:对脚本语言的支持 七:用Console开发控制台程序 六:插入式注解处理API(Pluggable Annotation Processing API) 五:轻量级Http Server API 四:使用Compiler API 三...

    JAXB-2.2.6-release-documentation

    - **2.2.5-2 至 2.2.6**:这些更改可能包括 bug 修复、性能改进以及新特性的引入。 - **2.2.5-1 至 2.2.5-2**:同样记录了这一小版本之间的变更。 - **后续版本至 2.2.5**:每个小版本之间的变更都被详细列出,...

    jaxb2.3.0依赖jar.rar

    JAXB 2.3.0引入了一些新的特性和改进,包括: 1. **Java SE 9+支持**:JAXB 2.3.0开始支持Java 9及其后续版本,这包括模块化系统(Jigsaw)的集成。 2. **API增强**:可能包含了新的API接口或方法,以提供更丰富的...

    JDK6的新特性.rar

    Java Development Kit (JDK) 6是Java编程语言的一个重要版本,它引入了许多新特性,极大地提升了开发效率和应用程序的功能性。以下是对JDK6主要新特性的详细说明: 1. **嵌入式数据库 Derby**: JDK 6包含了Apache ...

    [精品]JAVA6新特性介绍使用JAXB来实现对象与XML之间的映射.doc

    【JAVA6新特性:JAXB简介】 Java Architecture for XML Binding(JAXB)是Java平台上的一个标准技术,它提供了一种方便的对象与XML之间的映射机制。在Java 6中,JAXB已经成为Java Standard Edition(Java SE)的一...

    JDK1.6新特性搜集整理

    通过这些新特性,JDK1.6为开发者提供了更强大的工具集,提升了开发效率,同时也优化了应用程序的性能和可管理性。理解并掌握这些特性,对于深入理解Java技术和开发高质量的Java应用具有重要的意义。

    jdk包含6版本

    Java SE 6是Java平台标准版的一个重大更新,发布于2006年,它在前一版本的基础上引入了多项新特性和改进。 1. **新特性**: - **Scripting支持**:Java 6通过Java Scripting API引入了对脚本语言的支持,允许Java...

    JDK1.6新特性说明.doc

    2. **JAXB2**: JAXB (Java Architecture for XML Binding) 2.0 提供了对象与XML之间的自动转换,使得XML数据的处理更加便捷。通过注解,可以轻松地将Java类映射到XML Schema,反之亦然。 3. **StAX (Streaming API ...

    JDK1.6、JDK6下载

    4. **XML处理改进**:JAXB(Java Architecture for XML Binding)和StAX(Streaming API for XML)在JDK 6中得到了加强,提供了更快的XML解析和生成能力。 5. **改进的内存管理**:垃圾收集器进行了优化,尤其是...

    Java6JDK1.6新特性总结大全附代码.docx

    二、JAXB2(JSR 222)对象-XML 映射 1. JAXB 提供了对象与XML之间的自动转换,极大地简化了XML处理: - 在JDK 1.6中,JAXB 2.0被引入Java SE,它使用注解(Annotation)标记需要绑定的类和属性。 - 通过注解如`@...

    JDK 6.2.3文文档.rar

    JDK6新特性目录导航: Desktop类和SystemTray类 JAXB2实现对象与XML之间的映射 StAX Compiler API 轻量级 Http Server API 插入式注解处理API(Pluggable Annotation Processing API) 用Console开发控制台程序 对...

    JDK7.0新特性

    ### JDK 7.0 新特性详解 随着Java技术的不断发展和完善,每一版更新都带来了新的特性和优化。JDK 7.0作为Java发展史上的一个重要里程碑,不仅增强了语言本身的特性,还在运行时环境中加入了多项重要的改进。接下来...

    JDK1.6新特性与实战例子

    ### JDK6新特性详解 #### 1. Desktop类和SystemTray类 `Desktop` 类允许开发者与用户的桌面环境进行交互,如打开浏览器、发送电子邮件、打印文件等。下面是一个简单的使用示例: ```java if (Desktop....

Global site tag (gtag.js) - Google Analytics