XMLBeans 允许你以一种友好的方式来操作 XML 文档,它是一种把 XML (可移植的数据)和 JAVA 编程语言(可移植的代码)绑定在一起的工具。它的优点在于:你可以使用 XML 和 XML Schema 灵活性来设计数据模式和接口,然后很自然地把它们映射成对应的 JAVA 语言代码,这样就可以在任何 JAVA 应用环境中访问和修改 XML 实例数据。
虽然《 dev2dev 创刊号》中已经有一篇文章(《 XMLBeans :两方面都是最佳方案》,以下简称《最佳方案》)对 XMLBeans 作了简单论述,并给了一个订单的例子,但却没有如何使用 XKit 来开发 XMLBeans 的内容,因此本文将侧重于这方面的介绍,所以内容与《最佳方案》并不冲突。
XMLBeans 可以从 BEA 公司的 http://workshop.bea.com/xmlbeans/xmlbeans.zip 站点下载。解压缩后,有一个 xkit 的目录,内容包括:
./lib/xbean.jar | 大小为 3492KB ,是 XMLBeans 的实现类库,支持的 JDK 版本为 JDK1.4.x 。 |
./bin | Xkit 的全部命令行脚本。 |
./anttask.html | antTask 文档 |
./javadoc | com.bea.xml.* 类图 |
./src | XMLBeans 的源代码 |
./schemas | 些 schemas 的例子 |
确保安装了 JDK 1.4.x ,并且 java[.exe] 、 javac[.exe] 、 jar[.exe] 在 PATH 中, XMLBeans 的 bin 目录也在 PATH 中。设置环境变量 XMLBEANDIR ,值为 ./lib 目录路径,如在 WINDOWS 下: SET XMLBEANDIR=G:\bea\xkit\lib
通过执行 scomp 命令来编译 Schema , scomp 的用法为:
G:\bea\xkit\bin>scomp
Compiles a schema into XML Bean classes and metadata.
Usage: scomp [opts] [dirs]* [schema.xsd]* [service.wsdl]* [config.xsdconfig]*
Options include:
-cp [a;b;c] - classpath
-d [dir] - target binary directory for .class and .xsb files
-src [dir] - target directory for generated .java files
-srconly - do not compile .java files or jar the output.
-out [result.jar] ? 指定输出的 Jar 文件名,如 output.jar
-dl - permit network downloads for imports and includes (default is off)
-noupa - do not enforce the unique particle attribution rule
-nopvr - do not enforce the particle valid (restriction) rule
-quiet - print fewer informational messages
-license 打印 XMLBeans 的 license 文件内容
对于《最佳方案》中的 Order.xsd 文件内容为:
清单 1:Order.xsd
< xs:schema targetNamespace =" http://www.ikigo.com/bods "
xmlns =" http://www.ikigo.com/bods "
xmlns:xs =" http://www.w3.org/2001/XMLSchema " version =" 1.0 "> < xs:element name =" order "> < xs:complexType > < xs:sequence > < xs:element ref =" header "/> < xs:element ref =" lines "/> </ xs:sequence > </ xs:complexType > </ xs:element > < xs:element name =" header "> < xs:complexType > < xs:sequence > < xs:element ref =" customer "/> < xs:element ref =" po "/> </ xs:sequence > </ xs:complexType > </ xs:element > < xs:element name =" customer " type =" xs:string "/> < xs:element name =" po " type =" xs:int "/> < xs:element name =" lines "> < xs:complexType > < xs:sequence > < xs:element ref =" line " minOccurs =" 0 " maxOccurs =" unbounded "/> </ xs:sequence > </ xs:complexType > </ xs:element > < xs:element name =" line "> < xs:complexType > < xs:sequence > < xs:element ref =" no "/> < xs:element ref =" item "/> < xs:element ref =" price "/> < xs:element ref =" qty "/> </ xs:sequence > </ xs:complexType > </ xs:element > < xs:element name =" no " type =" xs:int "/> < xs:element name =" item " type =" xs:string "/> < xs:element name =" price " type =" xs:float "/> < xs:element name =" qty " type =" xs:int "/> </ xs:schema >
编译 Order.xsd 生成的 Jar 文件为 Order.jar ,命令为:
G:\bea\xkit\bin>scomp ?out Order.jar Order.xsd
Loading schema file Order.xsd
Time to build schema type system: 2.093 seconds
Time to generate code: 5.918 seconds Compiled types to Order.jar
[1] [2] 下一页