??????
利用
XMLBean
讀寫
xml
文件非常的方便,主要是通過
xml
文件生成
xsd
即所謂的
Schema
文件,然后利用
scomp
(是
XMLBean
提供的一個編譯工具
,
它在
bin
的目錄下),
通過這個工具,我們可以將以上的
Schema
文件生成
Java Classes
。這一步要如果通過
Ant
來實(shí)現(xiàn),顯得非常的方便和簡單,如下: (務(wù)必注意,要將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
示例
請務(wù)必在腳本中定義任務(wù),如下所示:
<taskdef name="xmlbean" classname="org.apache.xmlbeans.impl.tool.XMLBean" classpath="path/to/xbean.jar" />
下面的腳本在
Schema
目錄中生成所有
Schema
,并創(chuàng)建一個名為
Schemas.jar
的
jar
文件。
<xmlbean schema="schemas" destfile="Schemas.jar"/>
下面的腳本將
Schema“ourSchema.xsd”
編譯成默認(rèn)
jar“xmltypes.jar”
。
?
如果遠(yuǎn)程
URL
定義了任何導(dǎo)入和包括,將在生成期間下載它們。
<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
參數(shù)定義在解析編譯后的
Schema
和
java
引用時所需的類路徑。
所生成的類將轉(zhuǎn)入
${build.dir}
。
參數(shù)
特性
|
描述
|
必需
|
Schema
|
指向單個
Schema
文件或文件目錄的文件。
?
非路徑引用。
?
如果需要同時生成多個
Schema
文件,應(yīng)使用嵌套的文件組,而不要設(shè)置
Schema
。
|
是,除非嵌套了一個文件組元素。
|
destfile
|
定義所創(chuàng)建的
jar
文件的名稱。
?
例如,
“myXMLBean.jar”
會將該任務(wù)的結(jié)果輸出到同名的
jar
中。
|
否,默認(rèn)為
“xmltypes.jar”
。
|
download
|
設(shè)置為
true
將允許編譯器下載要導(dǎo)入和包括的
URL
。
?
默認(rèn)為
false
,這意味著所有導(dǎo)入和包括的內(nèi)容都必須在本地進(jìn)行復(fù)制。
|
否,默認(rèn)為
false
。
|
failonerror
|
確定當(dāng)
XMLBean
創(chuàng)建過程遇到生成錯誤時,
ant
目標(biāo)是否將繼續(xù)。
|
否,默認(rèn)為
true
。
|
verbose
|
控制生成消息的輸出量。
|
否,默認(rèn)為
true
。
|
typesystemname
|
應(yīng)在其中生成
TypeSystemHolder
類的包的名稱。
?
通常不應(yīng)指定該名稱。該包中將不會生成
XMLBean
。使用
.xsdconfig
文件可以修改
XMLBean
包或類名。
|
否
|
classgendir
|
設(shè)置用來存放所生成的
CLASS
文件的位置。
|
否
|
srconly
|
true
值意味著只生成源代碼。
|
否,默認(rèn)為
false
。
|
srcgendir
|
設(shè)置用來存放所生成的
JAVA
文件的位置。
|
否
|
classpath
|
在下列情況下要用到的類路徑:如果文件組中的
Schema
將導(dǎo)入由其他編譯后的
XMLBean JAR
文件所提供的定義,或者
JAVA
文件位于
Schema
文件組中。此外,還支持嵌套的類路徑。
|
否
|
classpathref
|
添加類路徑,并將其作為對在其他位置所定義的路徑的
引用
。
|
否
|
includes
|
必須包括的文件模式的列表,以逗號或空格分隔。如果忽略,將包括所有文件。
|
否
|
includesfile
|
文件名。該文件的每一行都將作為一個
include
模式。
|
否
|
excludes
|
必須排除的文件模式的列表,以逗號或空格分隔。如果忽略,將不會排除任何文件(默認(rèn)排除的文件除外)。
|
否
|
excludesfile
|
文件名。該文件的每一行都將作為一個
exclude
模式。
|
否
|
defaultexcludes
|
指出是否應(yīng)使用默認(rèn)排除(
“yes”/“no”
)。如果忽略,將使用默認(rèn)排除。
|
否
|
debug
|
指出是否應(yīng)該在帶調(diào)試信息的情況下編譯源代碼,默認(rèn)為
off
。如果設(shè)置為
off
,
-g:none
將傳遞到支持它的編譯器的命令行(對于其他編譯器,將不會使用命令行參數(shù))。如果設(shè)置為
true
,
debuglevel
特性的值將決定命令行參數(shù)。
|
否
|
debuglevel
|
要追加到
-g
命令行開關(guān)后面的關(guān)鍵字列表。這將會被除
modern
和
classic(ver >= 1.2)
以外的所有實(shí)現(xiàn)忽略。合法值是
none
或下列關(guān)鍵字的逗號分隔列表:
lines
、
vars
和
source
。如果不指定
debuglevel
,則默認(rèn)情況下,將不會在
-g
的后面追加任何關(guān)鍵字。如果不打開
debug
,該特性將被忽略。
|
否
|
optimize
|
指出是否應(yīng)該用優(yōu)化方式編譯源代碼,默認(rèn)為
off
。
|
否
|
includeAntRuntime
|
指出是否應(yīng)在類路徑中包括
Ant
運(yùn)行時程序庫,默認(rèn)為
yes
。
|
否
|
includeJavaRuntime
|
指出是否應(yīng)在類路徑中包括來自執(zhí)行
VM
的默認(rèn)運(yùn)行時程序庫,默認(rèn)為
no
。
|
否
|
fork
|
是否應(yīng)在外部使用
JDK
編譯器執(zhí)行
javac
,默認(rèn)為
yes
。
|
否,默認(rèn)為
true
|
executable
|
當(dāng)
fork="yes"
時應(yīng)使用的
javac
可執(zhí)行文件的完整路徑。默認(rèn)為當(dāng)前運(yùn)行
Ant
的
Java
版編譯器。如果
fork="no"
,該參數(shù)將被忽略。
|
否
|
memoryInitialSize
|
如果
javac
在外部運(yùn)行,則是底層
VM
的初始內(nèi)存大小;否則將被忽略。默認(rèn)為標(biāo)準(zhǔn)
VM
內(nèi)存設(shè)置。(例如:
83886080
、
81920k
或
80m
)
|
否
|
memoryMaximumSize
|
如果
javac
在外部運(yùn)行,則是底層
VM
的最大內(nèi)存大小;否則將被忽略。默認(rèn)為標(biāo)準(zhǔn)
VM
內(nèi)存設(shè)置。(例如:
83886080
、
81920k
或
80m
)
|
否
|
compiler
|
要使用的編譯器實(shí)現(xiàn)。如果未設(shè)置該特性,將使用
build.compiler
屬性的值(如果設(shè)置)。否則,將使用當(dāng)前
VM
的默認(rèn)編譯器。
|
否
|
?
具體用法參考:http://www-128.ibm.com/developerworks/cn/xml/x-beans1/index.html