2023年7月3日发(作者:)
Jaxb官⽅⽂档中⽂翻译JAXB提供了⾃动映射XML⽂档和Java对象的API和⼯具。JAXB框架可以完成下⾯的操作:
1、将XML内容Unmarshal成Java表⽰
2、访问和更新Java表⽰
3、将XML内容的Java表⽰Marshal成XML内容
JAXB提供了XML和Java代码之间的⾼效并且标准的映射。Java开发⼈员可以使⽤JAXB来简化开发,提⾼效率,因为使⽤JAXB可以写很少的代码,并且不需要很精通XML。JAXB使得开发⼈员可以很容易的使⽤XML和Web Service技术来扩展应⽤程序。1. Release Notes
JAXB Reference Implementation需要运⾏在J2SE 5.0或者更⾼的Java平台上。需要的JAR⽂件如下:
2.0运⾏环境:为Deploy JAXB2.0客户端所需要的JAR⽂件包括,,jsr173-1.0_1.0运⾏环境:为Deploy JAXB1.0客户端所需要的JAR⽂件包括2.0运⾏环境+
2. XJC⼯具
虽然在笔者的其他⽂章中,包含了关于XJC脚本⽂件的使⽤,但是为了保持⽂章的完整性,将XJC脚本的内容再次追加在本⽂中。
绑定schema表⽰⽣成⼀系列的Java类,这些java类表⽰了schema。所有的JAXB实现都提供了⼀个⼯具叫做绑定编译器来将⼀个schema绑定。例如,JAXB参考实现提供了⼀个绑定编译器,允许通过脚本来执⾏(shell/bat)。假设需要将⽂件进⾏绑定,并且假设是⼯作与*nix系统,那么绑定的命令如下:
-p -d work
选项说明:
-p:指定⽣成的类的包名
-d:指定存放类的⽬标⽬录
(译者注:其实绑定schema还有其他的选项和⽅法,例如Eclispe的xjc插件等)
C:/Documents and Settings/hp3643>xjc --help
Usage: xjc [-options ...]
Options:
-nv: 不进⾏输⼊schema的严格检查,默认情况下,XJC会进⾏严格的Schema检查,使⽤这个选项可以不进⾏严格的Schema检查,只是进⾏不太严格的检查 -extension: 默认情况下,XJC绑定编译器强制执⾏JAXB规范中的兼容性部分的规则,Appendix E.2定义了⼀些列JAXB v1.0所不⽀持的W3C XML Schema特性。这时,就可以使⽤-extension模式来⽀持这些特性。在默认情况下,只能使⽤规范中定义的绑定⾃定义。通过使⽤-extension选项,可以使⽤JAXB提供商扩展。 -b
xjc -b
xjc -b -b -b -d
-p
-httpproxy
-classpath
-catalog
-readOnly: ⽣成的⽂件的状态为只读
-npa: 不⽣成包级别的annotations
-xmlschema: 将输⼊当作W3C XML Schema (默认)处理
-relaxng: 将输⼊当作RELAXNG (试验阶段,不⽀持)处理
-relaxng-compact: 将输⼊当作RELAXNG comapact语法 (试验阶段,不⽀持)处理
-dtd: 将输⼊当作XML DTD (experimental,unsupported)
-wsdl: 将输⼊当作WSDL处理(experimental,unsupported)
-verbose: 额外的显⽰
-quiet: 不输出编译结果 -help: 显⽰帮助信息
-version: 显⽰版本信息
Extensions:
-Xlocator: 对⽣成的代码启⽤源代码位置⽀持
-Xsync-methods: ⽣成访问的⽅法标志为''synchronized''关键字
-mark-generated: 将⽣成的代码标记为@ted
windows下运⾏命令:F:/eclipse/workspace/JAXBTutorial/src>xjc -p -d . text/jaxp/(译者注:译者的系统中安装了Java(TM) Web Services Developer Pack 2.0,安装⽬录为C:/Sun/jwsdp-2.0,并将C:/Sun/jwsdp-2.0/jaxb/bin添加到了系统的path环境属性中)parsing
compiling
test/jaxb/
test/jaxb/
test/jaxb/
test/jaxb/
运⾏完上述命令后,会⽣成⼀些类。
3. XJC Ant Task
在jwsdp或者其他的jaxb ri库中,都包含了这个⽂件,在这个⽂件中,包含了⽂件,这个⽂件可以应⽤于Ant构建⼯具中。在Ant构建脚本(⼀般为)中包含如下的语句:
上⾯的task定义将XJCTask映射到Ant task,并命名为xjc。在样例程序中包含了如何使⽤xjc任务。
该任务的语法如下:
环境变量:
ANT OPTS –将命令⾏参数传递给JVM。例如定义系统属性或者设置最⼤的Java堆⼤⼩。
参数属性:
xjc⽀持以下的参数属性:
schema:xml schema⽂件。这个属性或者
binding:外部绑定⽂件,应⽤于schema⽂件。
package:如果指定了的话,那么⽣成的java⽂件会放在这个包下,与命令⾏参数-p⼀样。
destdir:⽬标⽬录,与命令⾏参数-d⼀样。必须属性。
readonly:是否以只读⽅式⽣成java源⽂件,默认为false。
extension:如果设置为true,那么XJC绑定表⼀起会以扩展⽅式运⾏,否则的话,会按照严格的⽅式运⾏。和命令⾏⼯具的-extension参数⼀样。
catalog:指定分类⽂件来处理外部实体引⽤。
removeOldOutput:和
source:指定使⽤哪个版本的编译器。可以是1.0或者2.0.⽣成的Java代码会参考JAXB1.0或者JAXB2.0规范制定的规则。
xjc⽀持下⾯的嵌套元素:
schema:同时编译⼀个或者多个schema,schema⼦元素的语法和
binding:可以同时指定⼀个或者多个外部绑定⽂件,binding⼦元素的语法和
classpath:指定由⽤户指定的类路径。
arg:⼀些额外的命令⾏参数。这个元素可以指定多个选项:
-nv
-use-runtime
-schema
-dtd
-relaxng
-Xlocator
-Xsync-methods
下⾯是⼀些使⽤XJC Task的例⼦: 下⾯是⼀些使⽤XJC Task的例⼦:
编译src/,⽬标⽬录为src,包名为:
编译src下⾯的所有schema⽂件,⽬标⽬录为src,包名默认:
编译src下⾯的所有schema⽂件,⽬标⽬录为src,绑定为src⽬录下的所有xjb⽂件:
由于ant默认需要fileset中的⽂件夹必须存在,所以mkdir是必须的,下⾯的例⼦做了⼀个up-to-date的检查,如果有更新的话,那么src/org/acme/foo和其impl⼦⽬录的⽂件在编译之前就会被删除,所以不要将⾃⼰编写的类⽂件放在上述两个⽬录中。
更加复杂的up-to-date检查,如果xsd进⾏了更新,或者dtd⽂件进⾏了更新,都需要进⾏重新的编译schema。
使⽤arg⼦元素:
设置环境变量或者系统属性:
> set ANT_OPTS=-ost=
> set ANT_OPTS=%ANT_OPTS% -ort=8080
> ant
4. SchemaGen⼯具
schema⽣成器可以通过schemagen shell脚本或者bat批处理⽂件来运⾏。⽬前schema⽣成器可以处理java源⽂件或者class⽂件。
同时,也提供了Ant task的⽅式来运⾏Schema⽣成器。
对于不同的操作系统,使⽤这个⼯具的例⼦如下:
For Solaris/Linux
% path/to/jaxb/bin/ ...
For WindowsNT/2000/XP
> path/to/jaxb/bin/ ...
注意:默认的schema⽂件的⽂件名为。
如果Java源⽂件或者类⽂件需要参考其他的类,那么必须可以通过系统的CLASSPATH来访问,或者需要指定-classpath选项,否则的话,会发⽣错误。
命令⾏参数:
Usage: schemagen [options ...]
Options:
-d
-cp
-classpath
-help:显⽰帮助信息 -help:显⽰帮助信息
⽬前schema⽣成器为Java类⽂件使⽤的名称空间⽣成schema⽂件。没有办法控制⽣成的schema⽂件的名字,可以使⽤Ant任务来完成这个功能。
5. Schema⽣成器的Ant Task
⽂件中包含了⽂件,这样就可以在Ant构建⼯具中使⽤schema⽣成器了。SchemaGenTask的定义如下:
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688382967a129741.html
评论列表(0条)