`
zhongzhihua
  • 浏览: 313232 次
  • 来自: ...
社区版块
存档分类
最新评论

jaxb2.0入门实例(java -> xml)

    博客分类:
  • java
阅读更多

下载地址:

https://jaxb.dev.java.net/servlets/ProjectDocumentList

下载完后:java -jar JAXB2_20061211.jar

JDK6的新特性之二:使用JAXB2来实现对象与XML之间的映射 
JAXB是 Java Architecture for XML Binding的缩写,可以将一个Java对象转变成为XML格式,反之亦然。我们把对象与关系数 据库之间的映射称为ORM, 其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping). 原来JAXB是Java EE 的一部分,在JDK6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。JDK6中自带的这个JAXB版本是2.0, 比起 1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作 量。实际上,在Java EE 5.0中,EJB和Web Services也通过Annotation来简化开发工作。另外,JAXB2在底层是用 StAX(JSR 173)来处理XML文档。 闲话不多说了,下面用代码演示在JDK6中如何来用JAXB2

public class JAXB2Tester {
    public static void main(String[] args) throws JAXBException,IOException {
        JAXBContext context = JAXBContext.newInstance(Person.class);
        //下面代码演示将对象转变为xml
        Marshaller m = context.createMarshaller();
        Address address = new Address("China","Beijing","Beijing","ShangDi West","100080");
        Person p = new Person(Calendar.getInstance(),"JAXB2",address,Gender.MALE,"SW");
        FileWriter fw = new FileWriter("person.xml");
        m.marshal(p,fw);

        //下面代码演示将上面生成的xml转换为对象
        FileReader fr = new FileReader("person.xml");
        Unmarshaller um = context.createUnmarshaller();
        Person p2 = (Person)um.unmarshal(fr);
        System.out.println("Country:"+p2.getAddress().getCountry());
    }
}

@XmlRootElement//表示person是一个根元素
class Person {    
    @XmlElement
    Calendar birthDay; //birthday将作为person的子元素

    @XmlAttribute
    String name; //name将作为person的的一个属性

    public Address getAddress() {
        return address;
    }

    @XmlElement
    Address address; //address将作为person的子元素

    @XmlElement
    Gender gender; //gender将作为person的子元素

    @XmlElement
    String job; //job将作为person的子元素

    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(true),
    FEMALE (false);
    private boolean value;
    Gender(boolean _value){
        value = _value;
    }
}

class Address {
    @XmlAttribute
    String country;
    @XmlElement
    String state;
    @XmlElement
    String city;
    @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;
    }
}

运行该程序,我们会得到一个person.xml的文件,如下:

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

<person name="JAXB2">
      <birthDay>2006-12-28T08:49:27.203+00:00</birthDay> 
       <address country="China">
            <state>Beijing</state> 
            <city>Beijing</city> 
            <street>ShangDi West</street> 
  </address>
       <gender>MALE</gender> 
       <job>SW</job> 
</person>
控制台会输出

Country:China

最后,想说一点,除了JAXB之外,我们还可以通过XMLBeans和Castor等来实现同样的功能。

分享到:
评论

相关推荐

    jaxb-api-2.3.1-API文档-中文版.zip

    Maven坐标:javax.xml.bind:jaxb-api:2.3.1; 标签:bind、javax、xml、api、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    jaxb-core-2.2.10-b140310.1920-API文档-中文版.zip

    赠送jar包:jaxb-core-2.2.10-b140310.1920.jar; 赠送原API文档:jaxb-core-2.2.10-b140310.1920-javadoc.jar; 赠送源代码:jaxb-core-2.2.10-b140310.1920-sources.jar; 赠送Maven依赖信息文件:jaxb-core-...

    jaxb-runtime-2.3.5-API文档-中英对照版.zip

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

    jaxb-impl-2.2.10-b140310.1920-API文档-中文版.zip

    赠送jar包:jaxb-impl-2.2.10-b140310.1920.jar; 赠送原API文档:jaxb-impl-2.2.10-b140310.1920-javadoc.jar; 赠送源代码:jaxb-impl-2.2.10-b140310.1920-sources.jar; 赠送Maven依赖信息文件:jaxb-impl-...

    jaxb-runtime-2.3.5-API文档-中文版.zip

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

    jackson-module-jaxb-annotations-2.7.8-API文档-中英对照版.zip

    赠送jar包:jackson-module-jaxb-annotations-2.7.8.jar; 赠送原API文档:jackson-module-jaxb-annotations-2.7.8-javadoc.jar; 赠送源代码:jackson-module-jaxb-annotations-2.7.8-sources.jar; 赠送Maven依赖...

    javax.rar(jaxb-impl-2.3.0、jaxb-core-2.3.0、jaxb-api-2.3.0)

    标题中的"jaxb-impl-2.3.0、jaxb-core-2.3.0、jaxb-api-2.3.0"是JAXB的不同组件版本号,它们在处理XML到Java对象之间的转换时起到关键作用。在描述中提到的“Maven项目中缺少jaxb-api的异常报错”,通常指的是在运行...

    jaxb-api-2.0.jar

    jaxb-api-2.0.jar jaxb-api-2.0.jar

    jaxb2.0英文文档

    **Java Architecture for XML Binding (JAXB) 2.0** 是一个Java标准,它提供了一种将XML数据与Java对象之间进行自动转换的机制。这个技术是Java平台企业版(Java EE)的一部分,也是Java标准版(Java SE)的一个可选...

    jaxb-api-2.3.0-API文档-中英对照版.zip

    Maven坐标:javax.xml.bind:jaxb-api:2.3.0; 标签:javax、xml、bind、jaxb、api、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    jaxb-api-2.1.jar

    在使用webservice,esb等需要jaxb的项目里经常会出现 JAXB 2.0 API is being loaded from the bootstrap classloader错误.执行System.out.println(System...输出jaxb-api-2.1.jar应该放的目录。下载附件放到目录下即可。

    jackson-module-jaxb-annotations-2.7.8-API文档-中文版.zip

    赠送jar包:jackson-module-jaxb-annotations-2.7.8.jar; 赠送原API文档:jackson-module-jaxb-annotations-2.7.8-javadoc.jar; 赠送源代码:jackson-module-jaxb-annotations-2.7.8-sources.jar; 赠送Maven依赖...

    jackson-module-jaxb-annotations-2.2.3-API文档-中文版.zip

    赠送jar包:jackson-module-jaxb-annotations-2.2.3.jar; 赠送原API文档:jackson-module-jaxb-annotations-2.2.3-javadoc.jar; 赠送源代码:jackson-module-jaxb-annotations-2.2.3-sources.jar; 赠送Maven依赖...

    CXF-JAXB包的处理问题

    而JAXB(Java Architecture for XML Binding)是Java平台的标准,用于将XML数据与Java对象之间进行绑定,使得开发者可以方便地在XML文档和Java对象之间转换。在处理CXF与JAXB的集成时,有时会遇到版本冲突的问题,...

    jaxb 2.0 java architecture for xml binding

    THE Java™Architecture for XML Binding (JAXB) provides a fast and convenient way to bind between XML schemas and Java representations, making it easy for Java developers to incorporate XML data and ...

    jaxb-api-2.3.0-API文档-中文版.zip

    Maven坐标:javax.xml.bind:jaxb-api:2.3.0; 标签:javax、xml、bind、jaxb、api、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档...

    jaxb-api-2.2.2-API文档-中文版.zip

    Maven坐标:javax.xml.bind:jaxb-api:2.2.2; 标签:bind、javax、xml、api、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...

    jaxb-api-2.2.11-API文档-中英对照版.zip

    Maven坐标:javax.xml.bind:jaxb-api:2.2.11; 标签:javax、xml、bind、jaxb、api、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译...

    jaxb-api-2.2.11-API文档-中文版.zip

    Maven坐标:javax.xml.bind:jaxb-api:2.2.11; 标签:javax、xml、bind、jaxb、api、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    JAXB2.0编组和解组实现

    相比于JAXB1.0,2.0版本提供了更加简洁和直观的API,使得开发人员无需编写大量的XML绑定文件(如bindings.xjb)就能完成XML和Java对象的映射。 **2. 编组(Marshalling)** 编组是将Java对象转换为XML的过程。在...

Global site tag (gtag.js) - Google Analytics