在文档中看到了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),内容是直接在网上找的,

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Customers>
  3. <customer>
  4. <id>1</id>
  5. <gender>female</gender>
  6. <firstname>Jessica</firstname>
  7. <lastname>Lim</lastname>
  8. <phoneNumber>1234567</phoneNumber>
  9. <address>
  10. <primaryAddress>
  11. <postalCode>350106</postalCode>
  12. <addressLine1>#25-1</addressLine1>
  13. <addressLine2>SHINSAYAMA 2-CHOME</addressLine2>
  14. </primaryAddress>
  15. <billingAddress>
  16. <receiver>Ms Danielle</receiver>
  17. <postalCode>350107</postalCode>
  18. <addressLine1>#167</addressLine1>
  19. <addressLine2>NORTH TOWER HARBOUR CITY</addressLine2>
  20. </billingAddress>
  21. </address>
  22. </customer>
  23. <customer>
  24. <id>2</id>
  25. <gender>male</gender>
  26. <firstname>David</firstname>
  27. <lastname>Bill</lastname>
  28. <phoneNumber>808182</phoneNumber>
  29. <address>
  30. <primaryAddress>
  31. <postalCode>319087</postalCode>
  32. <addressLine1>1033 WS St.</addressLine1>
  33. <addressLine2>Tima Road</addressLine2>
  34. </primaryAddress>
  35. <billingAddress>
  36. <receiver>Mr William</receiver>
  37. <postalCode>672993</postalCode>
  38. <addressLine1>1033 WS St.</addressLine1>
  39. <addressLine2>Tima Road</addressLine2>
  40. </billingAddress>
  41. </address>
  42. </customer>
  43. </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映射
  CustomerType.java -- 节点sustomer的映射
  AddressType.java -- 节点address的映射
  BillingAddressType.java -- 节点billingAddress的映射
  PrimaryAddressType.java -- 节点primaryAddress的映射
  注意:scomp命令中,空格是分割不同的参数的,所以参数里的文件路径包括空格的要用引号括起来。

准备工作就这些,在下一篇会介绍具体的如何使用xmlbean来进行对xml的读写操作。

xmlBean学习一的更多相关文章

  1. xmlBean学习二

    由上一遍的准备工作完成后,可以很简单的就进行对xml文件的操作, package com; import java.io.File; import java.io.IOException; impor ...

  2. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  3. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  4. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  5. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  6. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  7. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  8. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  9. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

随机推荐

  1. python定义影像投影

    import os import arcgisscripting gp=arcgisscripting.create() coordsys=r"C:\Winx86\ArcGIS\Coordi ...

  2. 热门Web开发方式 REST实现原理浅析

    REST 首先只是一种架构样式,不是一种标准.这点和 Ajax 类似,两者都是利用现有的成熟技术.在 REST 的定义中,一个 Web 应用总是使用固定的 URI 向外部世界呈现(或者说暴露)一个资源 ...

  3. c排序算法大全

    排序算法是一种基本并且常用的算法.由于实际工作中处理的数量巨大,所以排序算法 对算法本身的速度要求很高. 而一般我们所谓的算法的性能主要是指算法的复杂度,一般用O方法来表示.在后面将给出详细的说明.& ...

  4. 挺好看的CSS

    <?php header("content-type:text/html;charset=utf-8"); echo "<style>h1{ color ...

  5. Informatica9.6.1在Linux Red Hat 5.8上安装遇到的有关问题整理_2

    2. 产品安装过程提示Ping Domain Error 1)错误日志: Pinging domain... 8:19:22 AM ********************************** ...

  6. ScrollView中嵌套ListView

    scrollview中嵌入listview,要是直接把listview嵌进scrollview中,listview的高度是固定的不能进行滑动.默认情况下Android是禁止在ScrollView中放入 ...

  7. EditText 光标不显示问题

    android:textCursorDrawable="@drawable/bg_txt_cursor" <?xml version="1.0" enco ...

  8. selenium python (十四)上传文件的处理

    #!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip' #上传过程一般要打开一个系统的windows窗口,从窗口选择本地文件添加 ...

  9. 《DevOps故障排除:Linux服务器运维最佳实践》读书笔记

    首先,这本书是Linux.CN赠送的,多谢啦~ http://linux.cn/thread-12733-1-1.html http://linux.cn/thread-12754-1-1.html ...

  10. 让IE6IE7IE8支持CSS3属性的8种方法介绍

    我们都知道,IE浏览器暂不支持CSS3的一些属性.国外的工程师们,不安于此现状,他们总是尽量使用一些手段使IE浏览器也能支持CSS3属性,我觉得这些都是很有意义,很有价值的工作,可以推动整个技术领域的 ...