利用
XMLBean
读写
xml
文件非常的方便,主要是通过
xml
文件生成
xsd
即所谓的
Schema
文件,然后利用
scomp
(是
XMLBean
提供的一个编译工具
,
它在
bin
的目录下),
通过这个工具,我们可以将以上的
Schema
文件生成
Java Classes
。这一步要如果通过
Ant
来实现,显得非常的方便和简单,如下: (务必注意,要将jsr173_1.0_api.jar加入ant目录下的lib中,否则,会报错)
首先定义
build.properties
文件:
build.dir=classes
jar.dir=jar
xsd.dir=xsd
xbean.dir=lib
这个文件主要定义的是一些路径的名称,放在配置文件里面比较容易修改,下面的是
build.xml
文件:
<project default="build" basedir=".">
<property file="build.properties" description="Transfer property from .properties file"/>
<taskdef name="xmlbean" classname="org.apache.xmlbeans.impl.tool.XMLBean" classpath="${xbean.dir}\xbean.jar"/>
<xmlbean classgendir="${build.dir}" classpath="${class.path}" failonerror="true">
<fileset dir="${xsd.dir}" includes="**/*.*"/>
</xmlbean>
<xmlbean schema="${xsd.dir}" destfile="${jar.dir}\Schemas.jar"/>
</project>
其中的具体意义,可以参阅:
http://dev2dev.bea.com.cn/download/school/workshop/WorkshopCNHelp/doc/zh/core/index.html
http://dev2dev.bea.com.cn/download/school/workshop/WorkshopCNHelp/doc/zh/core/index.html
示例
请务必在脚本中定义任务,如下所示:
<taskdef name="xmlbean" classname="org.apache.xmlbeans.impl.tool.XMLBean" classpath="path/to/xbean.jar" />
下面的脚本在
Schema
目录中生成所有
Schema
,并创建一个名为
Schemas.jar
的
jar
文件。
<xmlbean schema="schemas" destfile="Schemas.jar"/>
下面的脚本将
Schema“ourSchema.xsd”
编译成默认
jar“xmltypes.jar”
。
如果远程
URL
定义了任何导入和包括,将在生成期间下载它们。
<xmlbean schema="schemas/ourSchema.xsd" download="true"/>
使用文件组
<xmlbean classgendir="${build.dir}" classpath="${class.path}"
failonerror="true">
<fileset basedir="src" excludes="**/*.xsd"/>
<fileset basedir="schemas" includes="**/*.*"/>
</xmlbean>
收集
src
目录中除
XSD
文件以外的所有文件,以及
schemas
目录中的每一个文件,并编译它们。文件组可以包括引用了以前所编译的
Schema
组件的
Schema
文件。
文件组还可以包含
JAVA
文件。
classpath
参数定义在解析编译后的
Schema
和
java
引用时所需的类路径。
所生成的类将转入
${build.dir}
。
参数
特性
|
描述
|
必需
|
Schema
|
指向单个
Schema
文件或文件目录的文件。
非路径引用。
如果需要同时生成多个
Schema
文件,应使用嵌套的文件组,而不要设置
Schema
。
|
是,除非嵌套了一个文件组元素。
|
destfile
|
定义所创建的
jar
文件的名称。
例如,
“myXMLBean.jar”
会将该任务的结果输出到同名的
jar
中。
|
否,默认为
“xmltypes.jar”
。
|
download
|
设置为
true
将允许编译器下载要导入和包括的
URL
。
默认为
false
,这意味着所有导入和包括的内容都必须在本地进行复制。
|
否,默认为
false
。
|
failonerror
|
确定当
XMLBean
创建过程遇到生成错误时,
ant
目标是否将继续。
|
否,默认为
true
。
|
verbose
|
控制生成消息的输出量。
|
否,默认为
true
。
|
typesystemname
|
应在其中生成
TypeSystemHolder
类的包的名称。
通常不应指定该名称。该包中将不会生成
XMLBean
。使用
.xsdconfig
文件可以修改
XMLBean
包或类名。
|
否
|
classgendir
|
设置用来存放所生成的
CLASS
文件的位置。
|
否
|
srconly
|
true
值意味着只生成源代码。
|
否,默认为
false
。
|
srcgendir
|
设置用来存放所生成的
JAVA
文件的位置。
|
否
|
classpath
|
在下列情况下要用到的类路径:如果文件组中的
Schema
将导入由其他编译后的
XMLBean JAR
文件所提供的定义,或者
JAVA
文件位于
Schema
文件组中。此外,还支持嵌套的类路径。
|
否
|
classpathref
|
添加类路径,并将其作为对在其他位置所定义的路径的
引用
。
|
否
|
includes
|
必须包括的文件模式的列表,以逗号或空格分隔。如果忽略,将包括所有文件。
|
否
|
includesfile
|
文件名。该文件的每一行都将作为一个
include
模式。
|
否
|
excludes
|
必须排除的文件模式的列表,以逗号或空格分隔。如果忽略,将不会排除任何文件(默认排除的文件除外)。
|
否
|
excludesfile
|
文件名。该文件的每一行都将作为一个
exclude
模式。
|
否
|
defaultexcludes
|
指出是否应使用默认排除(
“yes”/“no”
)。如果忽略,将使用默认排除。
|
否
|
debug
|
指出是否应该在带调试信息的情况下编译源代码,默认为
off
。如果设置为
off
,
-g:none
将传递到支持它的编译器的命令行(对于其他编译器,将不会使用命令行参数)。如果设置为
true
,
debuglevel
特性的值将决定命令行参数。
|
否
|
debuglevel
|
要追加到
-g
命令行开关后面的关键字列表。这将会被除
modern
和
classic(ver >= 1.2)
以外的所有实现忽略。合法值是
none
或下列关键字的逗号分隔列表:
lines
、
vars
和
source
。如果不指定
debuglevel
,则默认情况下,将不会在
-g
的后面追加任何关键字。如果不打开
debug
,该特性将被忽略。
|
否
|
optimize
|
指出是否应该用优化方式编译源代码,默认为
off
。
|
否
|
includeAntRuntime
|
指出是否应在类路径中包括
Ant
运行时程序库,默认为
yes
。
|
否
|
includeJavaRuntime
|
指出是否应在类路径中包括来自执行
VM
的默认运行时程序库,默认为
no
。
|
否
|
fork
|
是否应在外部使用
JDK
编译器执行
javac
,默认为
yes
。
|
否,默认为
true
|
executable
|
当
fork="yes"
时应使用的
javac
可执行文件的完整路径。默认为当前运行
Ant
的
Java
版编译器。如果
fork="no"
,该参数将被忽略。
|
否
|
memoryInitialSize
|
如果
javac
在外部运行,则是底层
VM
的初始内存大小;否则将被忽略。默认为标准
VM
内存设置。(例如:
83886080
、
81920k
或
80m
)
|
否
|
memoryMaximumSize
|
如果
javac
在外部运行,则是底层
VM
的最大内存大小;否则将被忽略。默认为标准
VM
内存设置。(例如:
83886080
、
81920k
或
80m
)
|
否
|
compiler
|
要使用的编译器实现。如果未设置该特性,将使用
build.compiler
属性的值(如果设置)。否则,将使用当前
VM
的默认编译器。
|
否
|
具体用法参考:http://www-128.ibm.com/developerworks/cn/xml/x-beans1/index.html