首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>编程相关>XML>要学会使用xmlbeans解析xml
要学会使用xmlbeans解析xml
来源: 发布时间:2007-11-17 发布人: 浏览: 人次   字体: [ ]  
1、准备工作
(1)       下载xmlbeans-2.3.0
解压后的目录结构如下:
xmlbeans-2.3.0
    +----bin:常用的命令
    +----docs
    +----lib:使用xmlbeans必要的jar包
    +----samples
    +----schemas
(2)       配置环境变量
增加系统环境变量JAVA_HOME(D:\ProgramFile\Java\jdk1.5.0_07)XMLBEANS_HOME(D:\xmlbeans-2.3.0),并在path变量后增加D:\xmlbeans-2.3.0\bin和D:\ProgramFile\Java\jdk1.5.0_07\bin
2、准备XML Schema文件
XML Schema文件(后缀为.xsd)是一个XML的约束文件,它定义了XML文件的结构和元素以及对元素和结构的约束。XMLBean需要通过这个文件知道一个XML文件的结构以及约束,比如数据类型等。利用这个Schema文件,XMLBean将会产生一系列相关的Java Classes来实现对XML的操作。而作为开发人员,则是利用XMLBean产生的Java Classes来完成对XML的操作。
在本项目中,Schema文件由设计人员利用XMLSPY生成并提供给开发人员。
3、Xmlbeans生成jar和class文件
(1)     手写xsd配置文件
xsd配置文件(后缀为. xsdconfig)这个文件主要用来制定生成的Java Class的一些文件名规则和Package的名称。Xsdconfig文件的示例如下:
<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">
<xb:namespace uri="http://www.cattsoft.com/ wscrm">
    <xb:package>com.cattsoft. wscrm</xb:package>
</xb:namespace>
</xb:config>
写好改文件后将其保存为wscrm.xsdconfig,并将该文件和wsd文件一起放到schema文件夹中并放到xmlbeans的根目录下。
以后可以根据需要修改namespace和package。
注:namespace 后面跟着一个 url的attribute。 如果不加这个 attribute,同样也会生成xml bean文件,只不过生成的jar文件中会多一层xmlbean的package 。
(2)     手写运行脚本
Xmlbeans提供的一个编译工具(scomp命令),它在bin的目录下。通过这个工具,我们可以将Schema文件生成Java Classess。但是为了避免使用命令行窗口的麻烦,我们手写一个运行脚本(run.bat)如下所示:
set XMLBEANS_HOME=D:\xmlbeans-2.3.0
set XMLBEANS_LIB=D:\xmlbeans-2.3.0\lib
scomp -src build\src -out build\wscrm.jar schema\*.xsd -compiler D:\ProgramFile\bea\jdk142_05\bin\javac schema\wscrm.xsdconfig
    该脚本的含义是:告诉scomp生成wscrm.jar,放在build目录下,同时生成源代码放在build\src下, Schema文件是schema文件夹下的所有.xsd,xsdconfig文件是schema\wscrm.xsdconfig文件
可以将该文件也放到bin目录下,以后如果生成同一个jar文件可以直接运行run.bat。如果生成一个新的jar需要根据生成jar包名称、xsd文件的位置、xsdconfig文件位置等修改该运行脚本。
附: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文件的位置。
(3)        运行脚本
运行run.bat其实, 在xmlbeans的根目录下会生成一个build目录,该目录中即保存了生成的Java源代码和jar包。实际上生成的Java源代码没有多大作用,我们要的是jar文件。对于其中的每个wsd文件在jar包中都会存在一个根节点(XML文档的Java Class映射),该根节点名字为XXXDocument。每个XXXDocument中每个element
4、Java程序中读取\构造xml
(1)     xmlbeans\lib下的包和生成的jar包加入到ProjectClassPath
(2)     XML文件
步骤简要描述:
--XXXDocument.Factory.newInstance()得到XXXDocument的对象实例XXXDocument
--增加一个xs:complexType的节点用XXXDocument add方法,返回值类行为该复杂节点在xsd文件中定义的类型
--给一个复杂节点的简单类型属性赋值用该节点的set方法
--调用XXXDocument.toString()方法可以将该xml文件的按照字符串行式输出
示例如下:
publicstatic String generateXML() throws IOException, XmlException{
       CustomersDocument doc=CustomersDocument.Factory.newInstance();
       CustomerType cust=doc.addNewCustomers().addNewCustomer();
       cust.setId(1000);
       cust.setGender("female");
       cust.setFirstname("Sophia");
       cust.setLastname("Lee");
       cust.setPhoneNumber("123456");
      
       AddressType address=cust.addNewAddress();
        PrimaryAddressType pAddress=address.addNewPrimaryAddress();
       pAddress.setPostalCode("100000");
       pAddress.setAddressLine1("ABC");
       pAddress.setAddressLine2("abc");
       BillingAddressType bAddress=address.addNewBillingAddress();
       bAddress.setAddressLine1("200000");
       bAddress.setAddressLine1("XYZ");
       bAddress.setAddressLine2("xyz");
       String xmlDoc=doc.toString();
                                                                          System.out.println("-------------------------------------");
       System.out.println(xmlDoc);
       System.out.println("--------------------------------------");
       return xmlDoc;
    }
(3)     读XML文件
步骤简要描述:
--XXXDocument.Factory.parse(xmlDoc)xml文件的字符串作为输入参数得到XXXDocument
--得到一个xs:complexType的节点用XXXDocument get方法,返回值类行为该复杂节点在xsd文件中定义的类型
--得到一个复杂节点的简单类型属性值用该节点的get方法
示例如下:
publicstaticvoid readXML(String xmlDoc) throws XmlException, IOException{
       CustomersDocument doc=CustomersDocument.Factory.parse(xmlDoc);
       CustomerType[] custs=doc.getCustomers().getCustomerArray();
       for(int i=0;i<custs.length;i++){
           CustomerType cust=(CustomerType)custs[i];
           System.out.println("cust#"+i);
           System.out.println("custId:"+cust.getId());
           System.out.println("custGender:"+cust.getGender());
           System.out.println("custFirstName:"+cust.getFirstname());
           System.out.println("csutLastName:"+cust.getLastname());
           System.out.println("custPhoneNumber:"+cust.getPhoneNumber());
          
           AddressType address=cust.getAddress();
           PrimaryAddressType pAddress=address.getPrimaryAddress();
           System.out.println("PrimaryAddress:"+pAddress.getPostalCode()+"--"+pAddress.getAddressLine1()+"--"+pAddress.getAddressLine2());
           BillingAddressType bAddress=address.getBillingAddress();
           System.out.println("BillingAddress:"+bAddress.getPostalCode()+"--"+bAddress.getAddressLine1()+"--"+bAddress.getAddressLine2());
          
           System.out.println("cust#"+i);
       }
    }
 

相 关 文 章   发布商链接
·实例分析Xml解析校验引起的依赖问题
·XPath语法定义及其使用介绍
·目前主流的XML编程接口API介绍
·XML基础入门之架构和语法的实例讲解
·实例详解利用xml创建可分页排序的数...
·实例讲解XML包含中文字符的URL编码问...
·XML数字签名如何签署外部文件的?
·关于xml 空格解释的核心部分理解
·使用JAXP解析xml文件示例
·小解一个简单的XMLSchema的例子
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·XML数字签名如何签署外部文件
·实例讲解XML包含中文字符的UR...
·实例详解利用xml创建可分页排
·目前主流的XML编程接口API介...
·XPath语法定义及其使用介绍
·实例分析Xml解析校验引起的依
·xml数据岛绑定时的超链接处理
·小解一个简单的XMLSchema的例
·使用JAXP解析xml文件示例
·关于xml 空格解释的核心部分...
热 门 文 章
·使用JAXP解析xml文件示例
·xml数据岛绑定时的超链接处理...
·目前主流的XML编程接口API介...
·关于xml 空格解释的核心部分...
·实例详解利用xml创建可分页排...
·XPath语法定义及其使用介绍
·实例分析Xml解析校验引起的依...
·小解一个简单的XMLSchema的例...
·XML基础入门之架构和语法的实...
·实例讲解XML包含中文字符的UR...
·XML数字签名如何签署外部文件...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .