关闭

JAXB小结

标签: schema文档对象jaxb
1059人阅读 评论(0) 收藏 举报
分类:

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。

1Java SE中的JAXB

JAXB 2.0是JDK 1.6的组成部分。JAXB 2.2.3是JDK 1.7的组成部分。

JDK中JAXB相关的重要Class和Interface:

JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。
Marshaller接口,将Java对象序列化为XML数据。
Unmarshaller接口,将XML数据反序列化为Java对象。

JDK中JAXB相关的重要Annotation:

@XmlType,将Java类或枚举类型映射到XML模式类型
@XmlAccessorType(XmlAccessType.FIELD) ,控制字段或属性的序列化。FIELD表示JAXB将自动绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML。其他值还有XmlAccessType.PROPERTY和XmlAccessType.NONE。
@XmlAccessorOrder,控制JAXB 绑定类中属性和字段的排序。
@XmlJavaTypeAdapter,使用定制的适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),以序列化Java类为XML。
@XmlElementWrapper ,对于数组或集合(即包含多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器)。
@XmlRootElement,将Java类或枚举类型映射到XML元素。
@XmlElement,将Java类的一个属性映射到与属性同名的一个XML元素。
@XmlAttribute,将Java类的一个属性映射到与属性同名的一个XML属性。

其他:

对于要序列化(marshal)为XML的Java类,绝不能把成员变量声明为public,否则运行将抛出异常com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException。
对于JAXB相关的重要Annotation的声明,如@Xml.....,可以放在成员变量的setter()getter()方法上,两者中任选其一即可,但决不能放在成员变量上,否则运行将抛出异常com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException。
[1]

2使用

“xjc”工具可以用来将XML模式或其他类型模式文件(Java 1.6试验性地支持RELAX NGDTD以及WSDL)转换为Java类。Java类使用javax.xml.bind.annotation包下的Java 标注,例如@XmlRootElement和@XmlElement。XML列表序列表示为java.util.List类型的属性, 通过JAXBContext可以创建Marshallers(将Java对象转换成XML)和Unmarshallers(将XML解析为Java对象)。
此外,JAXB包括了一个“schemagen”工具,能够执行“xjc”的反向操作,通过一组标注的Java类创建一个XML模式。

3缺省的数据类型绑定

下面的表格列出了JAXB中XML数据类型和Java数据类型的映射。
XML Schema类型
Java数据类型
xsd:string
java.lang.String
xsd:positiveInteger
java.math.BigInteger
xsd:int
int
xsd:long
long
xsd:short
short
xsd:decimal
java.math.BigDecimal
xsd:float
float
xsd:double
double
xsd:boolean
boolean
xsd:byte
byte
xsd:QName
javax.xml.namespace.QName
xsd:dateTime
javax.xml.datatype.XMLGregorianCalendar
xsd:base64Binary
byte[]
xsd:hexBinary
byte[]
xsd:unsignedInt
long
xsd:unsignedShort
int
xsd:unsignedByte
short
xsd:time
javax.xml.datatype.XMLGregorianCalendar
xsd:date
javax.xml.datatype.XMLGregorianCalendar
xsd:g
javax.xml.datatype.XMLGregorianCalendar
xsd:anySimpleType
java.lang.Object
xsd:anySimpleType
java.lang.String
xsd:duration
javax.xml.datatype.Duration
xsd:NOTATION
javax.xml.namespace.QName

0
0
查看评论

JAXB理解和应用实例

JAXB(Java Architecture for XML Binding)是JSE和JEE平台的一部分,让开发者能够快速完成java类和XML的互相映射。常用的地方就是对象类和xml之间的映射,能够让bo自动生成节点,节点自动转成实体bo。 JAXB封装在jdk中,jdk1.7及以上都不需要引入...
  • zhanglf02
  • zhanglf02
  • 2017-07-18 17:08
  • 965

JAXB简单入门小例子

1.在eclipse中创建JAXB工程,或者普通工程也行,只要导入相应的jar就可以了。 2.建立几个普通的JavaBean对象,不过这些JavaBean对象要做一些相应的处理(不要忘了打标价哦,下面例子会有的) 3.使用JAXB提供的API进行JavaBean和XML之间的呼唤。 4.代码演...
  • java_min
  • java_min
  • 2012-06-01 09:59
  • 1716

JAXB注解使用小结

在JAXB中(用于JAVA对象和xml之间的转换),经常出现各类的 @XmlElement这样的标记, 下面就来以一个例子小结下,加深学习: Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType @XmlElement @XmlRootElement @XmlAt...
  • Pnoter
  • Pnoter
  • 2016-08-16 11:57
  • 658

JAXB学习一 (入门)JAXB学习二 (类型绑定)

http://liugang594.iteye.com/blog/1285697 http://liugang594.iteye.com/blog/1285874 JAXB全称Java Architecture for XML Binding,是一个用于在XML...
  • liangxw1
  • liangxw1
  • 2016-05-24 09:49
  • 1055

JAXB生成XML文件去除Standlone

/**      * JAXB:java对象转换为xml文件(java對象需要添加註解)      * @param obj 要序列化文件的java对象      * @param model java对...
  • weixin_39964562
  • weixin_39964562
  • 2018-01-16 10:54
  • 31

jaxb string里包含的回车换行(CRLF)将会替换成whitespace, 导致格式信息丢失

问题描述: 1. 项目中从
  • u014219228
  • u014219228
  • 2014-11-04 15:14
  • 739

jaxb注解

JAXB(Java API for XML Binding),提供了一个快速便捷的方式将Java对象与XML进行转换。在JAX-WS(Java的WebService规范之一)中,JDK1.6 自带的版本JAX-WS2.1,其底层支持就是JAXB。     JAXB 可...
  • z69183787
  • z69183787
  • 2013-10-23 14:09
  • 4669

java使用jaxb操作xml示例

JAXB主要用来实现对象和XML之间的序列化和反序列化,关于JAXB的介绍就不多说了,这里主要总结下基本使用方法和一些注意事项 首先定义两个示例类ClassA,ClassB,用于后续的示例演示 复制代码代码如下: package cn.lzrabbit; ...
  • qq_27376871
  • qq_27376871
  • 2016-09-07 16:55
  • 1044

如何查看JDK所支持的JAXB版本

在命令行下敲入 即可看到JAXB的版本
  • xinglu
  • xinglu
  • 2014-07-11 19:14
  • 2738

eclipselink->JAXB:官网、API、文档

1、eclipselink网址: API: http://www.eclipse.org/eclipselink/api/2.3/index.html 文档: http://wiki.eclipse.org/EclipseLink/UserGuide/MOXy 例子:http://w...
  • lan861698789
  • lan861698789
  • 2012-05-17 23:08
  • 1618
    个人资料
    • 访问:204565次
    • 积分:2625
    • 等级:
    • 排名:第16356名
    • 原创:70篇
    • 转载:32篇
    • 译文:0篇
    • 评论:19条
    关于我

    [ 职业 ]: java工程师

    [ 总述 ]: 一个曾经以为可以改变世界的年轻人

    [ 致自己 ]
    世界有多残酷,
    我们就该有多坚强!

    [ 联系 ]: zhoudong_dream@163.com

    文章分类
    友情链接