`
lovemybook
  • 浏览: 39656 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Jaxb简介

阅读更多
JavaTM Architecture for XML Binding (JAXB) 提供了api 和工具用于自动映射XML文档和Java对象。
 
  JAXB框架允许开发者执行以下的操作:
 
  通过schema 生成相应的java 源文件
  访问以及更新相应的java 源文件
  配置java 源文件,生成相应的schema

  JAXB 给了java 开发者一种有效的和标准的方式用于映射xml和java 代码。java开发者使用JAXB能提供生产力,由于只需要写很少的代码,不需要成为xml方面的专家。JAXB 对于开发者来说更容易扩展他们的应用,使用XML或者web services技术。


  看一个简单的例子:

  从xsd文件生成相应的java 文件

  xsd 文件配置如下:
 
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
        schemaLocation="http://www.w3.org/2001/xml.xsd" />
 
  <xs:complexType name="foo">
    <xs:sequence>
      <xs:element name="age" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
 
  <xs:element name="root" type="foo" />
 
  </xs:schema>

  定义ant build :
  主要的内容如下:
<path id="classpath">
    <pathelement path="src" />
    <pathelement path="classes" />
    <pathelement path="schemas" />
    <!--for use with bundled ant-->
    <fileset dir="${jwsdp.home}" includes="jaxb/lib/*.jar" />
    <fileset dir="${jwsdp.home}" includes="sjsxp/lib/*.jar" />
    <fileset dir="${jwsdp.home}" includes="jwsdp-shared/lib/activation.jar" />
    <fileset dir="${jwsdp.home}" includes="jwsdp-shared/lib/resolver.jar" />
  </path>
  定义xjc任务,用于从schema 中生成相应的java 文件
  <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
    <classpath refid="classpath" />
  </taskdef>

  执行xjc
  <xjc schema="po.xsd" destdir="gen-src">
      <produces dir="gen-src" includes="**/*.java" />
  </xjc>

  执行ant 任务后产生的java 文件如下:

  foo.java

  @XmlAccessorType(AccessType.FIELD)
  @XmlType(name = "foo", propOrder = {
    "age"
})
public class Foo {

    @XmlElement(type = Integer.class)
    protected int age;

    /**
     * Gets the value of the age property.
     *
     */
    public int getAge() {
        return age;
    }

    /**
     * Sets the value of the age property.
     *
     */
    public void setAge(int value) {
        this.age = value;
    }

}

ObjectFactory.java 主要的产生类,作为工厂类

@XmlRegistry
public class ObjectFactory {

    private final static QName _Root_QNAME = new QName("", "root");

    /**
     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: generated
     *
     */
    public ObjectFactory() {
    }

    /**
     * Create an instance of {@link Foo }
     *
     */
    public Foo createFoo() {
        return new Foo();
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link Foo }{@code >}}
     *
     */
    @XmlElementDecl(namespace = "", name = "root")
    public JAXBElement<Foo> createRoot(Foo value) {
        return new JAXBElement<Foo>(_Root_QNAME, Foo.class, null, value);
    }

}
比较简单的实现,不过主要的工作还是用来通过java类来生成相应的xml文件:
测试方法:
public static void main(String[] args) throws Exception {
      
        JAXBContext context = JAXBContext.newInstance(ObjectFactory.class);
        ObjectFactory of = new ObjectFactory();
        Foo foo = new Foo();
        foo.setAge(11);
        JAXBElement<Foo> e = of.createRoot(foo);

        //用于输出元素
        Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        FileOutputStream stream = new FileOutputStream(new File(args[0]));
        marshaller.marshal(e, stream);
    }

生成的xml如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
    <age>11</age>
</root>
分享到:
评论

相关推荐

    JAXB简介_动力节点Java学院整理

    主要为大家详细介绍了JAXB简介的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    JAXB处理XML与对象互转

    一、简介 本文主要讲解JAXB来处理对象与XML进行互转。 其中关于CDATA数据的处理参考: Jaxb如何优雅的处理CData 这篇文章的实现,并略作改动。 二、常用注解(TODO) 三、封装 3.1 pom依赖(TODO) 3.2 ...

    bishruti_introsde-2015-assignment-1:服务设计和工程分配简介1

    服务设计和工程分配简介1介绍这由XML,XSD,XPATH,编组,反编组XML以及使用JAXB XJC转换为JSON的一些基础知识组成。结构根文件夹包含以下内容: 源文件夹(src)此文件夹包含执行程序所需的Java文件。 它主要包括...

    castor R/M映射神器

    castor简介 castor是一种将java对象和XML自动绑定的开源软件。它可以在java对象、XML文本、SQL数据表以及LDAP目录之间绑定。Castor几乎是JAXB的替代品。Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现...

    微信公众平台JavaSDKweixin-popular.zip

    简介: weixin-popular 包括微信公众平台基础API与支付API,提供便捷的API调用接口. API 列表: TokenAPI access_token 获取 MediaAPI 多媒体上传下载(临时素材) ...

    introsde-2015-assignment-1

    2015年作品简介1 指数 第一部分 1.1。类XPathHealthProfile.java 1.2。 任务1 :制作一个功能,以详细打印列表中的所有人员。 1.3。 Task2 :接受id作为参数并打印具有该id的人的HealthProfile的函数。 1.4。 ...

    Java_EE_6规范中文版

    6.13 JAX-WS 2.2 标准 6.14 JAX-RS 1.1标准 6.15 JAXB 2.2 标准 6.16 JAXR 1.0 标准 6.17 API 1.1标准 6.18 API 1.2 标准 6.19 JACC 1.4 标准 6.20 JASPIC 1.0 标准 6.21 JSR-45 标准 6.22 SJSTL 1.2 标准 6.23 ...

    xmljava系统源码-framework:FUNTL框架

    简介 Funtl Framework 基于多个优秀开源项目,高度整合封装,提供了互联网项目常用的工具类,如:在线支付、阿里云OSS、消息队列、Redis缓存、短信验证、百度编辑器、微信SDK等 模块 funtl-framework-core 核心模块...

    Java SE实践教程 源代码 下载

    9.2.2 我的联系手册(JAXB实现) 238 9.3 小结 242 第10章 准备环球旅行——应用程序国际化 243 10.1 讲解 244 10.1.1 概念介绍 244 10.1.2 设置Locale 249 10.1.3 隔离语言环境相关数据 252 10.1.4 格式化 ...

    Java SE实践教程 pdf格式电子书 下载(一) 更新

    9.2.2 我的联系手册(JAXB实现) 238 9.3 小结 242 第10章 准备环球旅行——应用程序国际化 243 10.1 讲解 244 10.1.1 概念介绍 244 10.1.2 设置Locale 249 10.1.3 隔离语言环境相关数据 252 10.1.4 格式化 ...

    Java SE实践教程 pdf格式电子书 下载(四) 更新

    9.2.2 我的联系手册(JAXB实现) 238 9.3 小结 242 第10章 准备环球旅行——应用程序国际化 243 10.1 讲解 244 10.1.1 概念介绍 244 10.1.2 设置Locale 249 10.1.3 隔离语言环境相关数据 252 10.1.4 格式化 ...

    jax-ws 2.0文档说明以及源码

    jax-ws webservice类简介开发,包含文档以及源码,谢谢支持!get get get

    从Java走向Java+EE+.rar

    4.6 Java EE中的JAXB 55 4.7 小结 64 第5章 使用Java Servlet开发动态网页 65 5.1 Servlet的概念和生命周期 65 5.2 如何编写Servlet 67 5.3 使用Eclipse和Tomcat开发Servlet实例——输出字符串响应 72 ...

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

    2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao 2.3.3 LoginLogDao 2.3.4 在Spring中装配DAO 2.4 业务层 2.4.1 ...

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

    2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao 2.3.3 LoginLogDao 2.3.4 在Spring中装配DAO 2.4 业务层 2.4.1 ...

Global site tag (gtag.js) - Google Analytics