使用XMLBeans简化XML操作

环境:
jdk1.5.0_12
xmlbeans-2.2.0

[b]简介[/b]
XMLBeans是Bea公司的一个项目,用于访问和处理数据和文档。使用XMLBeans可以让您用面向对象的观点来对待和处理xml数据和文档,同时又可以忠实于该xml数据对应的xml结构和schema。这里简单的介绍了XMLBeans,并且给出了一个简单的例子。 XMLBeans来自于Bea,是使用java技术访问和处理XML数据和文档技术的一次突破性进展。第一次,开发者可以用自己熟悉的、方便的、面向对象的视图来看待XML数据,同时又可以访问该数据对应的结构和schema。

XMLBeans 面临着传统解析和绑定技术的竞争,如 DOM、SAX、JAXB 和 Castor,但 XMLBeans 有一些独到之处。它们的比较如下:[list]
[*]DOM 在内容中生成整个文档的树。如果文档非常大,DOM 就会变得对内存非常敏感,并会显著降低性能。通过增量解组(incremental unmarshalling)并提供 xget 方法来访问内置的模式数据类型,XMLBeans 取得了较好的性能。
[*]与 DOM 相比,SAX 对内存要求不高,但是 SAX 要求开发人员为事件处理程序编写回调方法,而 XMLBeans 则不需要。
[*]与 XMLBeans 类似,JAXB 和 Castor 也都是 XML/Java 绑定技术,但它们都没有提供百分之百的模式支持。XMLBeans 最大的优势之一是几乎百分之百的支持 XML Schema。此外,XMLBeans 还能够访问完整的 XML Infoset,对于强调元素顺序或者注释的应用程序,这一点特别有用。
[*]XMLBeans 还提供了解析 XML 实例的即时验证。
[*]XMLBeans 包括一些创新的特性,如 XML 游标和对 XQuery 的支持。如果开发人员需要处理复杂的 XML 模式和需要更多的本机支持(比如访问完整的 XML Infoset),那么 XMLBeans 是无可替代的。
[/list]

[u]知道了xml相当于会浏览数据库的表[/u]
[u]知道了xpath相当于知道了sql[/u]
[u]知道了schema相当于知道建表了[/u]

一个简单的例子:

<?xml version="1.0" encoding="GBK"?>
<circle xmlns:an="http://www.an.net/shape" name="demoCircle">
<center>
<x>155</x>
<y>231</y>
</center>
<radius>15.59</radius>
</circle>


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:an="http://www.an.net/shape"
targetNamespace="http://www.an.net/shape" elementFormDefault="qualified">
<xs:element name="circle">
<xs:complexType>
<xs:sequence>
<xs:element name="center" type="an:PointType"/>
<xs:element name="radius" type="xs:double"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
</xs:element>

<xs:complexType name="PointType">
<xs:sequence>
<xs:element name="x" type="xs:nonPositiveInteger"/>
<xs:element name="y" type="xs:nonPositiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

编译成jar包,命令类似下面:
D:\Apache\xmlbeans-2.2.0\bin\scomp -out myshape.jar myshape.xsd


import net.an.shape.CircleDocument;
import net.an.shape.PointType;
import java.io.File;

public class MyShapeTest {
public static void main(String[] args) throws Exception {
File input = new File("myshape.xml");
CircleDocument circleDoc = CircleDocument.Factory.parse(input);
CircleDocument.Circle circle = circleDoc.getCircle();
String name = circle.getName();
double radius = circle.getRadius();
PointType center = circle.getCenter();
System.out.printf("circle: %s, certer: x=%d y=%d, radius=%.3f\n",
name,center.getX(),center.getY(),radius);
}
}

输出如下:
circle: demoCircle, certer: x=155 y=231, radius=15.590
Press any key to continue...
[b]总结[/b]
XMLBeans是Bea公司的一个公开源代码项目,以Schema为基础建立的、访问xml的一种解决方法,提供了访问和处理xml数据和文档时既可以完全的访问xml的内容、又不丢失xml的schema信息的强大功能。使用XMLBeans可以让您用面向对象的观点来对待和处理xml数据和文档,同时又可以忠实于该xml数据对应的xml结构和schema。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值