`
lovemybook
  • 浏览: 40212 次
  • 性别: 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的例子

    **JAXB简介** Java Architecture for XML Binding (JAXB) 是Java平台上的一个重要标准,它提供了一种机制,能够将XML文档与Java对象之间进行映射,实现XML数据和Java对象的无缝转换。JAXB允许开发者在Java应用中...

    java学习之jaxb的学习一

    一、JAXB简介 JAXB允许开发者将XML Schema映射到Java类,从而可以使用Java对象来表示XML文档的内容。通过JAXB,我们可以将XML文档解析成Java对象,以便于操作;同时,也可以将Java对象转换成XML文档,便于数据交换。...

    jaxb和jackson的jar

    **JAXB简介** JAXB是Java标准,它提供了从Java对象到XML和从XML到Java对象的自动转换能力。通过使用JAXB,开发者可以避免手动编写XML解析和生成代码,极大地提高了开发效率。JAXB的核心概念包括:`@XmlRootElement`...

    JaxbUtil.zip_jaxb

    **JAXB简介** JAXB是Java平台标准版(Java SE)的一部分,它允许开发者在Java类和XML Schema之间进行自动绑定。通过JAXB,开发者可以轻松地将Java对象序列化为XML文档,或者将XML文档反序列化为Java对象,极大地简化...

    webservice之使用jaxb把xml转换Object或把对象转换成xml文件

    一、JAXB简介 JAXB是Java平台标准版(Java SE)的一部分,提供了一种自动的方式来绑定XML Schema到Java类,使得XML文档可以被Java对象解析,同时Java对象也可以被序列化为XML文档。这种机制极大地简化了XML数据处理...

    用jaxb 实现 xml转java对象技术

    **JAXB简介** JAXB是Java SE的一部分,提供了一种从Java类到XML文档以及从XML文档到Java对象的映射机制。其核心思想是通过注解或者绑定文件(bind.xml)来定义Java类与XML元素之间的对应关系。一旦定义了这种映射,...

    JAXB应用实例.zip_36ZP_gainrtu_java

    **JAXB简介** JAXB 提供了两个主要功能:XML到Java对象的绑定(unmarshalling)和Java对象到XML的转换(marshalling)。通过自动化的代码生成,JAXB能够从Java类生成XML Schema,反之亦然。这种双向转换使得XML数据...

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

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

    JavaXml及Bean互转

    1. **JAXB简介**: JAXB是Java的标准API,它提供了基于注解的方式来进行Java Bean与XML之间的转换。JAXB允许开发者在Java类上使用特定的注解来指定XML元素和属性的映射。 2. **使用步骤**: - 在Java Bean类上添加...

    Java与XML数据绑定

    1. JAXB简介:JAXB是Java平台标准的一部分,提供了一种无代码生成的、基于注解的方式来实现XML和Java对象之间的绑定。通过在Java类上添加注解,JAXB可以自动地将XML文档解析为Java对象,同时也能将Java对象转换为XML...

    JAVA XML转化BEEN

    JAXB简介** JAXB是Java SE的一部分,它提供了一种将XML Schema映射到Java类以及将Java对象转换为XML文档的机制。JAXB通过注解或绑定文件实现XML与Java对象之间的自动转换,极大地简化了XML处理。 **2. JAXB的基本...

    java XML转成LIST可以转成指定的类数组

    2. **JAXB简介** JAXB允许我们在Java类和XML元素之间建立映射,从而实现XML到Java对象的自动序列化和反序列化。首先,我们需要创建一个对应的Java类,该类的字段将与XML元素对应。 3. **创建Java模型类** 假设...

    JDK6的新特性之一.doc

    ##### JAXB简介 JAXB(Java Architecture for XML Binding)是一种用于将Java对象转换为XML文档的技术,同时也能将XML文档转换回Java对象。这种技术简化了处理XML数据的过程,尤其适用于处理那些结构相对固定的数据...

    JAXB2.0编组和解组实现

    JAXB2.0简介** JAXB2.0是JAXB规范的第二个主要版本,引入了许多新特性,如注解支持、XML Schema绑定等。相比于JAXB1.0,2.0版本提供了更加简洁和直观的API,使得开发人员无需编写大量的XML绑定文件(如bindings....

    Java_XML生成与解析的四种方法

    JAXB简介 JAXB(Java Architecture for XML Binding)提供了一种将Java对象与XML文档之间的转换机制。通过注解或配置文件,可以轻松地将Java对象序列化为XML文档或将XML文档反序列化为Java对象。 ##### 2. 使用...

    《Jaxb2 转换XML文档》学习笔记

    1. **JAXB2简介** JAXB2提供了基于注解的API,使得XML和Java之间的映射变得简单直观。通过在Java类上使用特定的注解,如`@XmlRootElement`和`@XmlElement`,我们可以指定哪些类和字段应该被映射到XML元素。 2. **...

Global site tag (gtag.js) - Google Analytics