怎样利用XMLBean轻松读写XML(3)_Xml教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:浅谈XML的简易教程
文档格式的排错 我妈妈_的清单中有数十条菜谱,甚至数百条。如果产生一个致命错误,排错将非常困难 - 你将一行一行地寻找丢失的标记符。如果使用几层嵌套,发现错误将很困难。但是可以找到很好

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();
}

}

分享:解析XML轻松学习手册(3)XML的术语
第三章 XML的术语提纲: 导言 一.XML文档的有关术语 二.DTD的有关术语 导言 初学XML最令人头疼的就是有一大堆新的术语概念要理解。由于XML本身也是一个崭新的技术,正在不断发展和变化,各组织

来源:模板无忧//所属分类:Xml教程/更新时间:2009-05-17
相关Xml教程