利用 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 |
指出是否应该在带调试信息的情况下编译源代码,默认为 |
否 |
debuglevel |
要追加到 |
否 |
optimize |
指出是否应该用优化方式编译源代码,默认为 |
否 |
includeAntRuntime |
指出是否应在类路径中包括 Ant 运行时程序库,默认为 |
否 |
includeJavaRuntime |
指出是否应在类路径中包括来自执行 VM 的默认运行时程序库,默认为 |
否 |
fork |
是否应在外部使用 JDK 编译器执行 |
否,默认为 true |
executable |
当 |
否 |
memoryInitialSize |
如果 |
否 |
memoryMaximumSize |
如果 |
否 |
compiler |
要使用的编译器实现。如果未设置该特性,将使用 |