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][align=center]
分享到:
相关推荐
### XMLBeans 开发指南知识点详解 #### 一、XMLBeans简介与使用背景 XMLBeans是Apache组织提供的一个开源工具包,用于处理XML数据。通过它,开发者能够方便地将XML文档映射到Java对象,从而简化了XML数据的读取、...
3. **文档**:可能包括API参考文档或用户指南,提供了关于XMLBeans的详细使用方法和功能介绍。这些文档对于初学者来说非常有帮助,可以快速掌握XMLBeans的基本用法。 4. **构建脚本**:如Ant或Maven的配置文件,用于...
【标题】"maven+svn+XMLBeans"的实践指南 在软件开发中,整合不同的工具和技术可以帮助我们更高效地管理项目。本指南将深入探讨如何利用Maven、SVN和XMLBeans这三个组件来实现XML文件内容的读取,并生成对应的Java...
最后,我们将讨论一些实用工具和库,如JAXB(Java Architecture for XML Binding)和XMLBeans,它们帮助开发者在Java环境中轻松地处理XML数据。 总的来说,XML4.0编程指南旨在提供一个全面的XML学习资源,无论你是...
- **README**:通常提供项目的简要介绍、安装指南和使用示例。 - **changelog.txt**:记录了项目的版本变更历史,包括新特性、改进和修复的错误。 - **build.xml**:Ant构建脚本,用于自动化项目的构建过程。 - **...
- **XMLBeans绑定**:使用Apache XMLBeans工具进行数据绑定。 - **Castor绑定**:利用Castor工具将XML转换为Java对象。 - **JiBX绑定**:轻量级的XML绑定解决方案。 - **MessageBinding**:自定义消息绑定逻辑。 ##...
- **数据绑定**:XFire支持多种数据绑定机制,包括JAXB、Castor和XMLBeans,使得XML与Java对象之间的转换变得简单。 - **安全性**:XFire提供了基本的安全特性,如SOAP消息认证和SSL加密,确保Web Service的安全通信...
### XFire开发指南知识点概述 #### 一、XFire简介 - **定义**: XFire是一个高性能的Java SOAP框架,用于构建面向服务架构(SOA)的应用程序。 - **特性**: - 支持多种标准:如SOAP、WSDL、WS-I Basic Profile、WS-...
- **数据绑定**:Axis1.4支持多种数据绑定机制,如SOAP with Attachments (SwA) 和XMLBeans,这些机制决定了如何将Java对象序列化为XML消息,以及如何从XML消息反序列化为Java对象。 - **安全配置**:可以通过WS-...
6. 使用说明.txt:这个文件通常会包含关于如何在项目中引入这些库、如何使用POI API来操作Excel文件的基本指南和示例代码。 要使用这些库处理Excel文件,你需要按照以下步骤进行: 1. 将这些jar包添加到你的Java...
- **第三方对象工厂**:支持使用XMLBeans、JAXB等第三方框架来创建对象实例。 - **监听Dozer事件**:可以通过注册监听器来监控Dozer执行过程中的各种事件。 **2.9 PDF文档** Dozer提供了详细的PDF文档供用户参考,...
【Docx4j中文版开发手册】是一份详细介绍如何使用Docx4j库来处理docx、pptx和xlsx文件的开发指南。Docx4j是一个Java库,它允许开发者在Java环境中创建、读取、修改这些OpenXML格式的文档。这个中文版手册对于那些...
- `docs`:文档,包括用户指南、API参考和开发者指南。 - `src`:源代码,对于开发者来说,可以查看并理解CXF的内部工作原理。 - `schema`:包含各种XML Schema定义,用于验证XML消息。 在使用"apache-cxf-2.5.2"时...
- **manual**:包含XFire的帮助文档,提供详细的使用指南和技术要点。 - **modules**:包含根据特性编译的二进制包,可以选择单独使用或使用包含所有模块的XFire-all-1.2.6.jar。 - **LICENSE.txt**、**NOTICE.txt**...
博主提供的博文链接(https://148380547-163-com.iteye.com/blog/663452)可能提供了关于如何配置和使用这些库以实现搜索引擎功能的详细教程或指南。 【标签】"源码"表明该项目提供了源代码,允许开发者深入理解其...