XMLBeans使用指南

XMLBeans试图为Java语言提供一种简单的方式访问和操作XML数据。其特点是:在保留XML数据特点的情况下提供了类似Java类结构的访问方式。

操作XML的API通常将XML文件分拆以实现对各节点的操作。而XMLBeans则把XML文档本身作为一个整体处理,对应一个对象。而该对象则由XML文件的schema(XSD文件)生成,通过类似JavaBean的get和set方式访问具体的数据。而且XMLBeans支持所有的XML Schema定义。

其他处理XML的方式包括程序接口(DOM或者SAX)或者XML marshalling/binding工具(JAXB)。但前者没有针对schema的类型,DOM等需要理解全部对象模型,而且繁琐。JAXB提供对所有XML schema的支持,但仅仅实现了一部分,XMLBeans支持所有XML schema。而且由于XML保存在内存中,XMLBeans可以减少marshalling和demarshalling的负荷。

开始首先要说明的时XSD文件,也就是schema定义。XSD文件是XML文件需要遵守的规则,包括节点、类型等定义。XSD提供了丰富的数据类型表示复杂的结构。例如:XSD可以控制数据的排序或者对某些数据做限制(出生日期在1900后)。

通过编译XSD文件得到一系列Java接口,用以访问遵守该XSD规则的XML文档。具体实现方式下面叙述。

要使用XMLBeans操作XML,必须要有XSD和XML文件。可以先定义XSD,根据XSD生成相应的XML,也可以先写出XML,再生成相应的XSD,通过xmlspy可以实现这两个过程。一般使用XMLBeans就是为了获取XML文档中的数据,所以,我们首先定义一个XML文件,如下所示:

Gladys Kravitz Anytown, PA 2003-01-07T14:16:00-05:00 Burnham's Celestial Handbook, Vol1 5 21.79 2 Burnham's Celestial Handbook, Vol2 5 19.89 2 ZipShip 0.74
生成的XSD文件如下所示:


使用scomp命令由XSD文件生成JAR包,在classpath中引入该JAR包,就可以对上述XML文件操作了。如下面代码:

package docs.xmlbeans;import java.io.File;import org.apache.xmlbeans.*;import org.openuri.easypo.PurchaseOrderDocument;import org.openuri.easypo.PurchaseOrder;import org.openuri.easypo.LineItem;public class POHandler{ public static void printItems(File po) throws Exception { PurchaseOrderDocument poDoc = PurchaseOrderDocument.Factory.parse(po); PurchaseOrder po = poDoc.getPurchaseOrder(); LineItem[] lineitems = po.getLineItemArray(); System.out.println("Purchase order has " + lineitems.length + " line items."); double totalAmount = 0.0; int numberOfItems = 0; for (int j = 0; j < lineitems.length; j++) { System.out.println(" Line item: " + j); System.out.println( " Description: " + lineitems[j].getDescription()); System.out.println(" Quantity: " + lineitems[j].getQuantity()); System.out.println(" Price: " + lineitems[j].getPrice()); numberOfItems += lineitems[j].getQuantity(); totalAmount += lineitems[j].getPrice() * lineitems[j].getQuantity(); } System.out.println("Total items: " + numberOfItems); System.out.println("Total amount: " + totalAmount); }}
运行结果为:

Purchase order has 3 line items.Line item 0 Description: Burnham's Celestial Handbook, Vol 1 Quantity: 2 Price: 21.79Line item 1 Description: Burnham's Celestial Handbook, Vol 2 Quantity: 2 Price: 19.89Total items: 4Total amount: 41.68

[align=left][/align][align=center][/align]

你可能感兴趣的:(XMLBeans使用指南)