使用XMLBeans简化XML操作

环境:
jdk1.5.0_12
xmlbeans-2.2.0

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

XMLBeans 面临着传统解析和绑定技术的竞争,如 DOM、SAX、JAXB 和 Castor,但 XMLBeans 有一些独到之处。它们的比较如下:
  • 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 是无可替代的。


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

一个简单的例子:
<?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...
总结
XMLBeans是Bea公司的一个公开源代码项目,以Schema为基础建立的、访问xml的一种解决方法,提供了访问和处理xml数据和文档时既可以完全的访问xml的内容、又不丢失xml的schema信息的强大功能。使用XMLBeans可以让您用面向对象的观点来对待和处理xml数据和文档,同时又可以忠实于该xml数据对应的xml结构和schema。

你可能感兴趣的:(apache,数据结构,sql,xml,.net)