Java SE6新特性: XML API 与Web服务
文章主要介绍 Java SE 6 在 API 库方面的部分新特性,通过一些例子和讲解,帮助开发者在编程实践当中更好的运用 Java SE 6,提高开发效率。本文是系列文章的最后一篇,主要介绍了 Java SE 6 中提供的 XML 处理框架,以及在此框架之上结合注释(Annotation) 技术,所提供的强大的针对 Web 服务的支持。
XML 框架介绍
Java SE 6 平台提供的 XML 处理主要包括两个功能:XML 处理(JAXP,Java Architecture XML Processing)和 XML 绑定(JAXB,Java Architecture XML Binding)。JAXP 包括 SAX 框架 —— 遍历元素,做出处理;DOM 框架 —— 构造 XML 文件的树形表示;StAX 框架 —— 拖拽方式的解析;XSLT 框架 —— 将 XML 数据转换成其他格式。JAXB 则是负责将 XML 文件和 Java 对象绑定,在新版 JDK 中,被大量的使用在 Web 服务技术中。
SAX 框架(Simple API for XML)
SAX 全称 Simple API for XML,该框架使用了事件处理机制来处理 XML 文件,图 3 展示了这个过程。
图 3. SAX 框架处理 XML 文件的流程

SAXParser 将 XML 文件当作流读入。当 parser 遇到 Element_A,就会产生一个事件,然后将该事件发送给处理类。SAX 框架的一大特点是对于节点的处理是上下文无关的。比如 图 3 中 SAXParser,允许注册一个处理类,这个处理类对于所有节点并不加以区分,对他们的处理过程都是一致的。一般包括 startElement 和 endElement 等动作。清单 2 给出了处理类的 startElement 动作的伪代码。
清单 2. 处理类的 startElement 动作的伪代码
| 1 CLASS Listener < DefaultListener 2 PROCEDURE StartElement(…) 3 IF ( node->Obj.name == ‘Node’ ) 4 // Do some calculation 5 FI 6 END 7 END 8 SAXParser->SetListener(new Listener) |
使用 SAX 框架,对于 Node 节点的处理并不会根据其前驱或者后缀节点的不同而有所区别。伪代码 3-5 行说明了这一点。一旦发现节点名称是 Node,则进行预定的处理。这个框架本身并不支持对节点进行上下文相关的处理,除非开发者另外维护一些数据结构来记录上下文状态。正是由于 SAX 框架不需要记录的状态信息,所以运行时,SAX 框架占用的内存(footprint)比较小,解析的速度也比较快。
- 本文关键词:

