利用XMLBean轻轻松松读写XML(3)

来源:互联网 时间:2008-09-04 11:25:00 

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

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

      scomp -src build\src  -out build\customerXmlBean.jar schema\customer.xsd
             -compiler C:\jdk142_04\bin\javac customer.xsdconfig

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

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

CustomerType.java -- 节点sustomer的映射

AddressType.java -- 节点address的映射

BillingAddressType.java -- 节点billingAddress的映射

PrimaryAddressType.java -- 节点primaryAddress的映射

好了,到此我们所有的准备工作已经完成了. 下面就开始进入重点:利用刚才生成的jar文件读写XML.

五、利用XMLBean读XML文件

新建一个Java Project,将XMLBean2.0.0\lib\下的Jar文件和刚才我们生成的customerXmlBean.jar加入到Project的ClassPath.

新建一个Java Class: CustomerXMLBean. 源码如下:


           

    package com.sample.reader;

    import java.io.File;
   
    import sample.xmlbean.*;
    import org.apache.commons.beanutils.BeanUtils;
    import org.apache.xmlbeans.XmlOptions;
    public class CustomerXMLBean {
    private String filename = null;
   
    public CustomerXMLBean(String filename) {
            super();
            this.filename = filename;
    }

    public void customerReader() {
            try {
              File xmlFile = new File(filename);
              CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
              CustomerType[] customers = doc.getCustomers().getCustomerArray();
         
              for (int i = 0; i < customers.length; i++) {
                CustomerType customer = customers[i];
                println("Customer#" + i);
                println("Customer ID:" + customer.getId());
                println("First name:" + customer.getFirstname());
                println("Last name:" + customer.getLastname());
                println("Gender:" + customer.getGender());
                println("PhoneNumber:" + customer.getPhoneNumber());
                // Primary address
                PrimaryAddressType primaryAddress = customer.getAddress().getPrimaryAddress();
                println("PrimaryAddress:");
                println("PostalCode:" + primaryAddress.getPostalCode());
                println("AddressLine1:" + primaryAddress.getAddressLine1());
                println("AddressLine2:" + primaryAddress.getAddressLine2());
                // Billing address
                BillingAddressType billingAddress = customer.getAddress().getBillingAddress();
                println("BillingAddress:");
                println("Receiver:" + billingAddress.getReceiver());
                println("PostalCode:" + billingAddress.getPostalCode());
                println("AddressLine1:" + billingAddress.getAddressLine1());
                println("AddressLine2:" + billingAddress.getAddressLine2());
           
              }
            } catch (Exception ex) {
                    ex.printStackTrace();
            }
    }
    private void println(String str) {
          System.out.println(str);
    }
   public static void main(String[] args) {
      String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers.xml";
                  
     CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
                   customerXMLBean.customerReader();
    }

    }


标签:
0
投稿

猜你喜欢

  • HTML 5新增的元素

    2007-10-29 12:39:00
  • Python连接Redis的基本配置方法

    2023-09-29 21:28:27
  • linux系统使用python获取内存使用信息脚本分享

    2022-10-14 07:50:53
  • 从数据行入手保护SQL Server数据安全

    2009-04-13 10:28:00
  • Python中win32com模块的使用

    2021-01-22 11:46:52
  • MySQL慢sql优化思路详细讲解

    2024-01-18 03:51:43
  • 解决前后端分离 vue+springboot 跨域 session+cookie失效问题

    2024-06-07 15:22:43
  • PHP面向接口编程 耦合设计模式 简单范例

    2023-10-24 09:18:27
  • js 实现的可折叠留言板(附源码下载)

    2024-04-22 13:07:49
  • 使用pyecharts生成Echarts网页的实例

    2023-02-22 10:19:42
  • PHP获取类私有属性的3种方法

    2023-11-20 10:32:16
  • composer.lock文件的作用

    2023-06-06 13:05:24
  • MySQL 函数过程递归

    2008-07-25 19:32:00
  • python实现人机对战的五子棋游戏

    2021-07-05 04:36:03
  • python3.0 模拟用户登录,三次错误锁定的实例

    2022-07-23 01:35:48
  • go中import包的大坑解决方案

    2024-05-09 09:55:14
  • Python实现抓取腾讯视频所有电影的示例代码

    2021-09-11 13:17:37
  • 如何获取numpy array前N个最大值

    2022-02-08 18:48:28
  • 前后端分离和跨域问题的详细解决方案(CORS的原理)

    2023-05-30 01:19:26
  • 使用xml http为网站增加域名查询功能

    2008-05-29 13:42:00
  • asp之家 网络编程 m.aspxhome.com