XMLBean教程.docx

上传人:b****7 文档编号:23749913 上传时间:2023-05-20 格式:DOCX 页数:26 大小:25.31KB
下载 相关 举报
XMLBean教程.docx_第1页
第1页 / 共26页
XMLBean教程.docx_第2页
第2页 / 共26页
XMLBean教程.docx_第3页
第3页 / 共26页
XMLBean教程.docx_第4页
第4页 / 共26页
XMLBean教程.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

XMLBean教程.docx

《XMLBean教程.docx》由会员分享,可在线阅读,更多相关《XMLBean教程.docx(26页珍藏版)》请在冰豆网上搜索。

XMLBean教程.docx

XMLBean教程

一、关于XML解析

  XML在Java应用程序里变得越来越重要,广泛应用于数据存储和交换.比如我们常见的配置文件,都是以XML方式存储的.XML还应用于JavaMessageService和WebServices等技术作为数据交换.因此,正确读写XML文档是XML应用的基础.

  Java提供了SAX和DOM两种方式用于解析XML,但即便如此,要读写一个稍微复杂的XML,也不是一件容易的事.

二、XMLBean简介

  Hibernate已经成为目前流行的面向Java环境的对象/关系数据库映射工具.在Hibernate等对象/关系数据库映射工具出现之前,对数据库的操作是通过JDBC来实现的,对数据库的任何操作,开发人员都要自己写SQL语句来实现.对象/关系数据库映射工具出现后,对数据库的操作转成对JavaBean的操作,极大方便了数据库开发.所以如果有一个类似的工具能够实现将对XML的读写转成对JavaBean的操作,将会简化XML的读写,即使对XML不熟悉的开发人员也能方便地读写XML.这个工具就是XMLBean.

三、准备XMLBean和XML文档

  XMLBean是Apache的一个开源项目,可以从http:

//www.apache.org下载,最新的版本是2.0.解压后目录如下:

xmlbean2.0.0

    +---bin

    +---docs

    +---lib

    +---samples

    +---schemas

bin目录里是一些命令,我们就是使用这些命令来生成xmlbean

为了演示一个例子,准备一个XML文档(customers.xml),

  在本文的例子里,我们将对这个文档进行读写操作.文档源码如下:

xmlversion="1.0"encoding="UTF-8"?

>

   

           1

           female

           Jessica

           Lim

           1234567

           

               

                       350106

                       #25-1

                       SHINSAYAMA2-CHOME

               

               

                       MsDanielle

                       350107

                       #167

                       NORTHTOWERHARBOURCITY

               

           

   

   

           2

           male

           David

           Bill

           808182

           

               

                       319087

                       1033WSSt.

                       TimaRoad

               

               

                       MrWilliam

                       672993

                       1033WSSt.

                       TimaRoad

               

           

   

这是一个客户的数据模型,每个客户都有客户编号(ID),姓名,性别(gender),电话号码(phoneNumber)和地址,其中地址有两个:

首要地址(PrimaryAddress)和帐单地址(BillingAddress),每个地址有邮编,地址1,和地址2组成.其中帐单地址还有收件人(receiver).

四、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):

      

xmlversion="1.0"encoding="UTF-8"?

>

      

schemaxmlns:

xs="http:

//www.w3.org/2001/XMLSchema"

                 elementFormDefault="qualified">

        

elementname="Customers">

          

complexType>

            

sequence>

              

elementmaxOccurs="unbounded"name="customer"

                          type="customerType"/>

            

sequence>

          

complexType>

        

element>

      

complexTypename="customerType">

            

sequence>

              

elementname="id"type="xs:

int"/>

              

elementname="gender"type="xs:

string"/>

              

elementname="firstname"type="xs:

string"/>

              

elementname="lastname"type="xs:

string"/>

              

elementname="phoneNumber"type="xs:

string"/>

              

elementname="address"type="addressType"/>

            

sequence>

      

complexType>

        

complexTypename="addressType">

            

sequence>

              

elementname="primaryAddress"type="primaryAddressType"/>

              

elementname="billingAddress"type="billingAddressType"/>

            

sequence>

        

complexType>

        

complexTypename="primaryAddressType">

            

sequence>

              

elementname="postalCode"type="xs:

string"/>

              

elementname="addressLine1"type="xs:

string"/>

              

elementname="addressLine2"type="xs:

string"/>

            

sequence>

        

complexType>

        

complexTypename="billingAddressType">

            

sequence>

                  

elementname="receiver"type="xs:

string"/>

              

elementname="postalCode"type="xs:

string"/>

              

elementname="addressLine1"type="xs:

string"/>

              

elementname="addressLine2"type="xs:

string"/>

            

sequence>

        

complexType>

      

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

准备一个配置文件(文件名customer.xsdconfig),它的内容如下:

configxmlns:

xb="http:

//xml.apache.org/xmlbeans/2004/02/xbean/config">

 

namespace>

   

package>sample.xmlbean

package>

 

namespace>

config>

  在本文,我是这样运行的:

     scomp-srcbuild\src -outbuild\customerXmlBean.jarschema\customer.xsd

            -compilerC:

\ProgramFiles\Java\jdk1.6.0_02\bin\javaccustomer.xsdconfig

  这个命令行的意思是告诉scomp生成customerXmlBean.jar,放在build目录下,同时生成源代码放在build\src下,Schema文件是customer.xsd,xsdconfig文件是customer.xsdconfig.其实,生成的Java源代码没有多大作用,我们要的是jar文件.我们先看一下build\src\sample\xmlbean下生成的Classes.

  CustomersDocument.java--整个XML文档的JavaClass映射

  CustomerType.java--节点sustomer的映射

  AddressType.java--节点address的映射

  BillingAddressType.java--节点billingAddress的映射

  PrimaryAddressType.java--节点primaryAddress的映射

好了,到此我们所有的准备工作已经完成了.下面就开始进入重点:

利用刚才生成的jar文件读写XML.

五、利用XMLBean读XML文件

  新建一个JavaProject,将XMLBean2.0.0\lib\下的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

               CustomerTypecustomer=customers[i];

               println("Customer#"+i);

               println("CustomerID:

"+customer.getId());

               println("Firstname:

"+customer.getFirstname());

               println("Lastname:

"+customer.getLastname());

               println("Gender:

"+customer.getGender());

               println("PhoneNumber:

"+customer.getPhoneNumber());

               //Primaryaddress

               PrimaryAddressTypeprimaryAddress=customer.getAddress().getPrimaryAddress();

               println("PrimaryAddress:

");

               println("PostalCode:

"+primaryAddress.getPostalCode());

               println("AddressLine1:

"+primaryAddress.getAddressLine1());

               println("AddressLine2:

"+primaryAddress.getAddressLine2());

               //Billingaddress

               BillingAddressTypebillingAddress=customer.getAddress().getBillingAddress();

               println("BillingAddress:

");

               println("Receiver:

"+billingAddress.getReceiver());

               println("PostalCode:

"+billingAddress.getPostalCode());

               println("AddressLine1:

"+billingAddress.getAddressLine1());

               println("AddressLine2:

"+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:

1234567

      PrimaryAddress:

      PostalCode:

350106

      AddressLine1:

#25-1

      AddressLine2:

SHINSAYAMA2-CHOME

      BillingAddress:

      Receiver:

MsDanielle

      PostalCode:

350107

      AddressLine1:

#167

      AddressLine2:

NORTHTOWERHARBOURCITY

      Customer#1

      CustomerID:

2

      Firstname:

David

      Lastname:

Bill

      Gender:

male

      PhoneNumber:

808182

      PrimaryAddress:

      PostalCode:

319087

      AddressLine1:

1033WSSt.

      AddressLine2:

TimaRoad

    

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1