Jaxb 绑定学习探索(二.进阶篇)
- 简介
- 自定义jaxb绑定
简介
上一篇文章我们已经介绍了如何使用maven 插件把xsd转化为java bean,而这篇文章主要是简析jaxb bindings中的内容。是对于oracle官网的使用手册的翻译解析。
自定义jaxb绑定
本节刚开始讨论您可以对JAXB绑定和验证方法进行自定义的表面。有关更多信息,请参阅JAXB规范(http://java.sun.com/xml/downloads/jaxb.html)。 绑定的两种方式:
随着注释在xml模式中内联
作为传递给JAXB绑定编译器的外部文件中的语句
为什么要自定义?
在大多数情况下,JAXB绑定编译器生成的默认绑定足以满足您的需求。但是,有些情况下您可能需要修改默认绑定。其中一些包括:
为新的jaxb包,类,方法和常量,添加注释创建API文档,解释您实现的概念,准则和规则。(即注释功能)
为默认的XML转化为java过程中无法自动处理的情况做出修正,例如:
解决名称冲突,多个变量的名称相同,无法区分哪个变量是属于哪个类,注意,JAXB绑定编译器会检测并报告所有名称冲突。(解决冲突)
提供非合法Java标识符的类型安全枚举常量的名称; 例如,枚举整数值。 (新建新类型)
为未命名模型组的Java表示绑定到Java属性或类时提供更好的名称(即可以根据自己的需求更改属性和类的名称)
提供比目标名称空间URI默认派生的更有意义的软件包名称(可以决定生成的java bean所属的包名)
覆盖默认绑定,例如:
指定模型组应该绑定到类而不是列表
指定可以将固定属性绑定到Java常量
将XML Schema内置数据类型的指定默认绑定覆盖为Java数据类型。在某些情况下,您可能需要引入一个替代Java类,它可以表示内置XML Schema数据类型的其他特征。本节介绍一些核心JAXB定制概念:
内联和外部自定义
1.内联,写在要转换的xml里。
2.外部绑定,写在外部文件中,使用配置文件定义绑定位置。
优缺点:使用内联自定义更加容易,因为您可以在所应用的模式的上下文中看到自定义。使用外部绑定自定义文件,您可以自定义JAXB绑定而无需修改源架构,并且使您可以轻松地将自定义项一次应用于多个架构文件。
注意:您可以合并这两种自定义 - 例如,您可以在内联注释中包含对外部绑定自定义文件的引用 - 但无法在同一模式元素上声明内联和外部自定义。内联自定义
内联自定义配置:<xs:annotation> <xs:appinfo> . jaxb binding tags here (jaxb:globalBindings, jaxb:bindings . </xs:appinfo> </xs:annotation>
例如:
<xs:annotation> <xs:appinfo> <jaxb:schemaBindings > <jaxb:package name="com.example.sandbox.internal.xsd.s