在文檔中看到了xmlBean的出現,因為項目使用JMS,模塊之間通過xml文件傳遞數據,就學一下xmlBean,java中還提供了DOM,SAX來解析xm,但也是比較麻煩的;而xmlbean則將xml轉化為javabean,簡化了xml的讀寫。好了,下面講解一下xmlBean的使用:
首先,下載xmlbean,apache下的一個開源項目,下載地址:http://archive.apache.org/dist/xml/xmlbeans/xmlbeans-current.zip,最新版本是2.6。
解壓後目錄是:
xmlbeans-1.0.3
--bin
--docs
--lib
--schemas
--src
第二:配置環境變量,配置path路徑(E:\xmlbeans-1.0.3\bin)。
第三:新建一個xml文件,(customers.xml),內容是直接在網上找的,
<?xml version="1.0" encoding="UTF-8"?> <Customers> <customer> <id>1</id> <gender>female</gender> <firstname>Jessica</firstname> <lastname>Lim</lastname> <phoneNumber>1234567</phoneNumber> <address> <primaryAddress> <postalCode>350106</postalCode> <addressLine1>#25-1</addressLine1> <addressLine2>SHINSAYAMA 2-CHOME</addressLine2> </primaryAddress> <billingAddress> <receiver>Ms Danielle</receiver> <postalCode>350107</postalCode> <addressLine1>#167</addressLine1> <addressLine2>NORTH TOWER HARBOUR CITY</addressLine2> </billingAddress> </address> </customer> <customer> <id>2</id> <gender>male</gender> <firstname>David</firstname> <lastname>Bill</lastname> <phoneNumber>808182</phoneNumber> <address> <primaryAddress> <postalCode>319087</postalCode> <addressLine1>1033 WS St.</addressLine1> <addressLine2>Tima Road</addressLine2> </primaryAddress> <billingAddress> <receiver>Mr William</receiver> <postalCode>672993</postalCode> <addressLine1>1033 WS St.</addressLine1> <addressLine2>Tima Road</addressLine2> </billingAddress> </address> </customer> </Customers>
這是一個客戶的數據模型,每個客戶都有客戶編號(ID),姓名,性別(gender),電話號碼(phoneNumber)和地址,其中地址有兩個: 首要地址(PrimaryAddress)和帳單地址(BillingAddress),每個地址有郵編,地址1,和地址2組成.其中帳單地址還有收件人(receiver).
第四:使用步驟:
1.生成XML Schema文件
正常情況下,每個xml文件都有一個Schema文件,他是一個xml的約束條件,定義了xml文件的結構元素,以及對元素結構的約束。
xmlbean需要通過這個文件知道xml文件的結構約束,比如數據類型等,利用這個文件,XMLBean將會產生一系列相關的java calsses來實現對xm的操作,開發人員利用這些java classess來完成對xml的操作。
可以使用XMLSPY和Stylus Studio通過xml文件來生成Schema文件。加入customer.xml的Schema文件(sustomer.xsd)
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="customer"
type="customerType" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="customerType">
<xs:sequence>
<xs:element name="id" type="xs:int" />
<xs:element name="gender" type="xs:string" />
<xs:element name="firstname" type="xs:string" />
<xs:element name="lastname" type="xs:string" />
<xs:element name="phoneNumber" type="xs:string" />
<xs:element name="address" type="addressType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="addressType">
<xs:sequence>
<xs:element name="primaryAddress" type="primaryAddressType" />
<xs:element name="billingAddress" type="billingAddressType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="primaryAddressType">
<xs:sequence>
<xs:element name="postalCode" type="xs:string" />
<xs:element name="addressLine1" type="xs:string" />
<xs:element name="addressLine2" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="billingAddressType">
<xs:sequence>
<xs:element name="receiver" type="xs:string" />
<xs:element name="postalCode" type="xs:string" />
<xs:element name="addressLine1" type="xs:string" />
<xs:element name="addressLine2" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
2.利用scomp來生成java classes
scomp是XMLBean提供的一個編譯工具,它在bin的目錄下. 通過這個工具,我們可以將以上的Schema文件生成Java Classes.scomp的語法如下:-
scomp [options] [dirs]* [schemaFile.xsd]* [service.wsdl]* [config.xsdconfig]*
主要參數說明:
-src [dir] -- 生成的Java Classes存放目錄
-srconly -- 不編譯Java Classes,不產生Jar文件
-out [jarFileName] -- 生成的Jar文件,缺省是xmltypes.jar
-compiler -- Java編譯器的路徑,即Javac的位置
schemaFile.xsd -- XML Schema文件位置
config.xsdconfig -- xsdconfig文件的位置, 這個文件主要用來制定生成的Java Class的一些文件名規則和Package的名稱,在本文,package是sample.xmlbean
准備一個配置文件(文件名customer.xsdconfig),它的內容如下:
<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">
<xb:namespace>
<xb:package>sample.xmlbean</xb:package>
</xb:namespace>
</xb:config>
我的運行命令是這樣的:
E:\xmlbeans-1.0.3>scomp -src build/src -out E:/xmlbeans-1.0.3/customerXmlBean.jar schemas/customer/customer.xsd -compiler C:/"Program Files"/Javak1.7.0_04/bin/javac E:/xmlbeans-1.0.3/schemas/custom er/customer.xsdconfig 這個命令是告訴scomp,將生成的源碼放到E:\xmlbeans-1.0.3下的build裡;將生成customerXmlBean.jar 放到E:/xmlbeans-1.0.3的根目錄下,建議此路徑寫絕對路徑;Schame文件是customer.xsd文件,xsdconfig文件是customer.xsdconfig文件,我們主要用的是customerXmlBean.jar 。在src下的源碼: CustomersDocument.java -- 整個XML文檔的Java Class映射准備工作就這些,在下一篇會介紹具體的如何使用xmlbean來進行對xml的讀寫操作。