利用XMLBean轻轻松松读写XMLWord文档格式.docx
《利用XMLBean轻轻松松读写XMLWord文档格式.docx》由会员分享,可在线阅读,更多相关《利用XMLBean轻轻松松读写XMLWord文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
在本文的例子里,我们将对这个文档进行读写操作.文档源码如下:
<
?
xmlversion="
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>
SHINSAYAMA2-CHOME<
/addressLine2>
/primaryAddress>
billingAddress>
receiver>
MsDanielle<
/receiver>
350107<
#167<
NORTHTOWERHARBOURCITY<
/billingAddress>
/address>
/customer>
2<
male<
David<
Bill<
808182<
319087<
1033WSSt.<
TimaRoad<
MrWilliam<
672993<
/Customers>
这是一个客户的数据模型,每个客户都有客户编号(ID),姓名,性别(gender),
电话号码(phoneNumber)和地址,其中地址有两个:
首要地址(PrimaryAddress)
和帐单地址(BillingAddress),每个地址有邮编,地址1,和地址2组成.
其中帐单地址还有收件人(receiver).
此外,还要准备一个配置文件(文件名customer.xsdconfig),这个文件的
作用我后面会讲,它的内容如下:
xb:
configxmlns:
xb="
http:
//xml.apache.org/xmlbeans/2004/02/xbean/config"
namespace>
package>
sample.xmlbean<
/xb:
config>
四、XMLBean使用步骤
和其他面向Java环境的对象/关系数据库映射工具的使用步骤一样,
在正式使用XMLBean前,我们要作两个准备.
1.生成XMLSchema文件
什么是XMLSchema文件?
正常情况下,每个XML文件都有一个Schema文件,
XMLSchema文件是一个XML的约束文件,它定义了XML文件的结构和元素.
以及对元素和结构的约束.通俗地讲,如果说XML文件是数据库里的记录,
那么Schema就是表结构定义.
为什么需要这个文件?
XMLBean需要通过这个文件知道一个XML文件的
结构以及约束,比如数据类型等.利用这个Schema文件,XMLBean将会产生
一系列相关的JavaClasses来实现对XML的操作.而作为开发人员,则是
利用XMLBean产生的JavaClasses来完成对XML的操作而不需要SAX或DOM.
怎样产生这个Schema文件呢?
如果对于熟悉XML的开发人员,可以自己来
写这个Schema文件,对于不熟悉XML的开发人员,可以通过一些工具来完成.
比较有名的如XMLSPY和StylusStudio都可以通过XML文件来生成Schema
文件.加入我们已经生成这个Schema文件(customer.xsd):
<
xs:
schemaxmlns:
xs="
//www.w3.org/2001/XMLSchema"
elementFormDefault="
qualified"
elementname="
Customers"
complexType>
sequence>
elementmaxOccurs="
unbounded"
name="
customer"
type="
customerType"
/>
/xs:
element>
complexTypename="
id"
int"
gender"
string"
firstname"
lastname"
phoneNumber"
address"
addressType"
primaryAddress"
primaryAddressType"
billingAddress"
billingAddressType"
postalCode"
addressLine1"
addressLine2"
receiver"
schema>
2.利用scomp来生成JavaClasses
scomp是XMLBean提供的一个编译工具,它在bin的目录下.通过这个工具,
我们可以将以上的Schema文件生成JavaClasses.
scomp的语法如下:
-
scomp[options][dirs]*[schemaFile.xsd]*[service.wsdl]*[config.xsdconfig]*
主要参数说明:
-src[dir]
--生成的JavaClasses存放目录
-srconly
--不编译JavaClasses,不产生Jar文件
-out[jarFileName]
--生成的Jar文件,缺省是xmltypes.jar
-compiler
--Java编译器的路径,即Javac的位置
schemaFile.xsd
--XMLSchema文件位置
config.xsdconfig
--xsdconfig文件的位置,这个文件主要用来制定生成的JavaClass
的一些文件名规则和Package的名称,在本文,package是sample.xmlbean
在本文,我是这样运行的:
scomp-srcbuildsrc
-outbuildcustomerXmlBean.jarschemacustomer.xsd
-compilerC:
jdk142_04injavaccustomer.xsdconfig
这个命令行的意思是告诉scomp生成customerXmlBean.jar,放在build目录下,同时
生成源代码放在buildsrc下,Schema文件是customer.xsd,xsdconfig文件是customer.xsdconfig.
其实,生成的Java源代码没有多大作用,我们要的是jar文件.我们先看一下buildsrcsamplexmlbean下生成的Classes.
CustomersDocument.java
--整个XML文档的JavaClass映射
CustomerType.java
--节点sustomer的映射
AddressType.java
--节点address的映射
BillingAddressType.java
--节点billingAddress的映射
PrimaryAddressType.java
--节点primaryAddress的映射
好了,到此我们所有的准备工作已经完成了.下面就开始进入重点:
利用刚才生成的jar文件读写XML.
五、利用XMLBean读XML文件
新建一个JavaProject,将XMLBean2.0.0lib下的Jar文件和刚才我们生成的customerXmlBean.jar加入
到Project的ClassPath.
新建一个JavaClass:
CustomerXMLBean.
源码如下:
packagecom.sample.reader;
importjava.io.File;
importsample.xmlbean.*;
importmons.beanutils.BeanUtils;
importorg.apache.xmlbeans.XmlOptions;
publicclassCustomerXMLBean{
privateStringfilename=null;
publicCustomerXMLBean(Stringfilename){
super();
this.filename=filename;
}
publicvoidcustomerReader(){
try{
FilexmlFile=newFile(filename);
CustomersDocumentdoc=CustomersDocument.Factory.parse(xmlFile);
CustomerType[]customers=doc.getCustomers().getCustomerArray();
for(inti=0;
i<
customers.length;
i++){
CustomerTypecustomer=customers[i];
println("
Customer#"
+i);
CustomerID:
"
+customer.getId());
Firstname:
+customer.getFirstname());
Lastname:
+customer.getLastname());
Gender:
+customer.getGender());
PhoneNumber:
+customer.getPhoneNumber());
//Primaryaddress
PrimaryAddressTypeprimaryAddress=customer.getAddress().getPrimaryAddress();
PrimaryAddress:
);
PostalCode:
+primaryAddress.getPostalCode());
AddressLine1:
+primaryAddress.getAddressLine1());
AddressLine2:
+primaryAddress.getAddressLine2());
//Billingaddress
BillingAddressTypebillingAddress=customer.getAddress().getBillingAddress();
BillingAddress:
Receiver:
+billingAddress.getReceiver());
+billingAddress.getPostalCode());
+billingAddress.getAddressLine1());
+billingAddress.getAddressLine2());
}catch(Exceptionex){
ex.printStackTrace();
privatevoidprintln(Stringstr){
System.out.println(str);
publicstaticvoidmain(String[]args){
Stringfilename="
F:
//JavaTest//Eclipse//XMLBean//xml//customers.xml"
;
CustomerXMLBeancustomerXMLBean=newCustomerXMLBean(filename);
customerXMLBean.customerReader();
运行它,参看输出结果:
Customer#0
CustomerID:
1
Firstname:
Jessica
Lastname:
Lim
Gender:
female
PhoneNumber:
12345