`
oaklet
  • 浏览: 109044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAXB的简单使用

    博客分类:
  • java
阅读更多
环境:
jdk1.6.0_07
JavaTM Architecture for XML Binding(JAXB) Reference Implementation, (build hudson-jaxb-ri-2.1-792)
简介
Sun推出JAXB(JavaTM Architecture for XML Binding )已经有很长一段时间了。
JAXB是一套自动映射XML和Java实例的开发接口和工具。JAXB使XML更加方便的编译一个XML SCHEMA到一个或若干个JAVA CLASS。提供了如下功能:从XML到JAVA的映射,访问、更新、验证JAVA的表现,从JAVA到XML的映射。

一个简单的例子:
<?xml version="1.0" encoding="GBK"?>
<circle xmlns:an="http://www.an.net/shape" name="demoCircle">
  <center>
    <x>155</x>
    <y>231</y>
  </center>
  <radius>15.59</radius>
</circle>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:an="http://www.an.net/shape" 
targetNamespace="http://www.an.net/shape" elementFormDefault="qualified">
  <xs:element name="circle">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="center" type="an:PointType"/>
        <xs:element name="radius" type="xs:double"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="PointType">
    <xs:sequence>
      <xs:element name="x" type="xs:nonPositiveInteger"/>
      <xs:element name="y" type="xs:nonPositiveInteger"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

编译成java class,命令类似下面:
D:\Java\jaxb\jaxb-ri-20090206\bin>xjc.bat myshape.xsd

把编译成的类引入到测试工程中,加入以下代码使用:
import java.io.BufferedReader;
import java.io.FileReader;
import java.math.BigInteger;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import net.an.shape.Circle;

public class HelloJaxb {
  public static void main(String[] args)throws Exception {
    JAXBContext jc = JAXBContext.newInstance(Circle.class);
    Unmarshaller cu = jc.createUnmarshaller();
    Object myobj = cu.unmarshal(new BufferedReader(new FileReader("myshape.xml")));
    Circle cc = (Circle) myobj;
    cc.setRadius(192.168);
    cc.getCenter().setX(BigInteger.valueOf(127));
    cc.getCenter().setY(BigInteger.valueOf(127));
    Marshaller cm = jc.createMarshaller();
    cm.marshal(cc, System.out);
  }
}

javax.xml.bind.Unmarshaller类可以将xml解析成java对象
javax.xml.bind.Marshaller类可以将java对象输出为xml。
大多数情况下均可以使用JAXB来操作xml,只有一些特殊情况再考虑 SAX、DOM、JDOM、XMLBeans。
注意:有时jaxb编译成java class时,有时有些java字段并不会生成@XmlElement标签,可能由于xsd中有些字段有划线,有些没有造成的?xsd中把字段大写就能跳过这个问题,
可能小写字母搞什么javabean规范,转换大小写的一个bug
分享到:
评论

相关推荐

    jaxb开发使用文档

    使用XSD转换的方式,相对比较简单,但需要使用者具有熟练的XSD编写经验,此外,使用XSD方式生成XML文档还有一大优势,就是在分布式系统中,不能保证XML信息的发送端和接收端都是使用的java运行环境,因此,XSD实际...

    axis部署WebServices 和 JAXB的使用

    在这个"axis部署WebServices 和 JAXB的使用"主题中,我们将深入探讨这两个关键技术及其协同工作。 首先,让我们关注Axis的部署过程。Axis1.3是Axis的一个较旧版本,但仍然适用于许多遗留系统。部署Web服务的基本...

    JAXB2 jaxb-api.jar jaxb-xjc.jar jaxb-impl.jar activation.jar

    如果在你的项目中需要使用JAXB2来处理XML,你可以将这些jar添加到项目的类路径中,以确保所有必要的依赖都已到位。例如,在Maven或Gradle项目中,可以通过配置依赖管理来引用这些库。在传统的Java应用中,你可能需要...

    JAXB的使用JAXB的使用

    总的来说,JAXB是Java平台处理XML数据的强大工具,尤其适用于简单的数据交换和存储。然而,在处理复杂的XML结构或对性能有极高要求的情况下,可能需要考虑其他的XML处理技术,如StAX或DOM。通过熟练掌握JAXB,开发者...

    JAXB简易教程

    这个简易教程将引导我们了解如何使用JAXB进行XML到Java对象以及Java对象到XML的转换,这对于处理XML数据在Java应用中的序列化和反序列化非常有用。 **1. 前言** JAXB的主要目的是简化XML数据处理,让开发者能够...

    Jaxb简单例子

    这个简单的例子将带你深入理解JAXB的基本用法,包括注解的使用和Java与XML之间的互相转换。 **一、JAXB的基本概念** 1. **Java对象到XML**: JAXB允许我们将Java对象直接序列化为XML格式的文档,这称为对象到XML的...

    jaxb-api-2.1.jar 和 jaxb-impl-2.1.8.jar

    总的来说,`jaxb-api-2.1.jar` 和 `jaxb-impl-2.1.8.jar` 在Java开发中扮演着重要的角色,它们为XML数据处理提供了强大的工具,使得XML与Java对象之间的转换变得简单易行。然而,随着技术的发展,开发者也应关注新的...

    JAXB 利用xsd文件生成java类

    - 易于使用:Java API简单直观,易于理解和使用。 8. **JAXB的局限**: - 大型复杂的XML结构可能导致生成的Java类过于庞大且难以管理。 - 对性能敏感的应用可能需要更高效的XML处理方式,如DOM、SAX或StAX。 ...

    jaxb生成XML例子

    总结起来,JAXB通过注解提供了一种简单的方法来控制Java对象如何被转换为XML,以及XML如何被反序列化回Java对象。通过适当使用这些注解,开发者可以精确地控制XML的结构和内容,从而满足特定的序列化需求。在实际...

    jaxb (XML操作)

    2. **实例化(Unmarshalling)**:当需要将XML数据转换为Java对象时,JAXB使用Unmarshaller接口解析XML文档,生成对应的Java对象。这个过程是将XML数据"反序列化"为可操作的Java对象。 3. **序列化(Marshalling)*...

    JAXB注解命名空间使用到的jar包

    JAXB使得XML数据的处理变得简单,特别是在处理复杂的数据交换时。当我们使用JDK 1.6时,JAXB是内建在JRE中的,但有时我们可能需要额外的jar包来支持特定的命名空间或扩展功能。 在描述中提到的"JAXB注解命名空间...

    jaxb-ri-2.2.7

    **Java Architecture for XML Binding...总的来说,JAXB是一个强大的工具,它简化了Java应用程序与XML数据的交互,使得处理XML变得简单而高效。JAXB 2.2.7版本的发布,无疑为开发者提供了更稳定、更健壮的XML处理能力。

    JAXB注解相关技术

    接下来我们通过一个简单的示例来进一步理解上述注解的使用: ```java @XmlRootElement public class Student { @XmlElement(name = "Name") // 指定 XML 元素名 private String name; @XmlAttribute(name = ...

    JAXB实例入门

    在本文中,我们将探讨JAXB的基本概念、使用场景以及如何通过一个简单的实例来入门。 ### JAXB的核心功能 1. **对象到XML的序列化**:JAXB能够将Java对象转换为XML文档,使得Java应用程序能够方便地生成XML输出。 2...

    使用jaxb根据xsd生成xml文档

    **使用JAXB根据XSD生成XML文档** 在Java开发中,XML文档的生成与解析是一项常见的任务,特别是在处理数据交换和存储时。JAXB(Java Architecture for XML Binding)是Java平台标准的一部分,它提供了一种将Java对象...

    jaxb-impl.jar包

    4. **数据持久化**:虽然不如ORM框架如Hibernate那么强大,但JAXB也能实现简单的XML数据持久化。 5. **XML文档生成**:生成符合特定格式的XML报告或者文档,如报表、日志等。 **最佳实践** 使用JAXB时,应注意...

    使用jaxb读取配置文件,并使用POI修改excel内容的例子

    在这个例子中,我们关注的是如何使用Java技术栈中的两个关键库:JAXB(Java Architecture for XML Binding)和Apache POI,来实现特定的功能。JAXB用于从XML文件中读取数据,而Apache POI则用于处理Excel文档,特别...

    利用jaxb实现xml和bean互转

    2. **注解Java Bean**: 使用JAXB注解如`@XmlRootElement`, `@XmlElement`, `@XmlAttribute`等来标记哪些类、字段应该被映射到XML。 3. **创建Context**: 创建`JAXBContext`对象,它是整个转换过程的核心。它知道...

    JAXB工具

    总的来说,JAXB提供了一种简单而强大的方式来处理XML数据,它减少了XML和Java之间转换的复杂性,提高了开发效率。通过注解,我们可以轻松地控制XML结构,并利用JAXB提供的API进行序列化和反序列化操作。在实际开发中...

    Jaxb webservice java调用

    通过这样的方式,JAXB使得我们在Java中调用Web服务变得简单且直观,无需手动处理XML解析和序列化的复杂过程。在实际应用中,JAXB结合其他Java Web服务框架,如JAX-WS,可以构建强大的客户端和服务端应用。

Global site tag (gtag.js) - Google Analytics