利用 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}" failοnerrοr="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}"
failοnerrοr="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 | 要使用的编译器实现。如果未设置该特性,将使用 |
|