Java SE6新特性: XML API 与Web服务
文章主要介绍 Java SE 6 在 API 库方面的部分新特性,通过一些例子和讲解,帮助开发者在编程实践当中更好的运用 Java SE 6,提高开发效率。本文是系列文章的最后一篇,主要介绍了 Java SE 6 中提供的 XML 处理框架,以及在此框架之上结合注释(Annotation) 技术,所提供的强大的针对 Web 服务的支持。
XSLT 数据转换框架(The Extensible Stylesheet Language Transformations APIs)
一般来说 XML 文件格式被认为是一种很好的数据交换格式。于是 Java SE 6 SDK 基于以上介绍的三种 XML 处理机制,提供了一个 XML 转换框架。XSLT 框架负责进行转换 —— 包括将 XML 文件转换成其他形式如 HTML,和将其他形式的文件转换成 XML 文件。更进一步说,这个框架可以接受 DOM 作为其输入和输出;可以接受 SAX 解析器作为输入或者产生 SAX 事件作为输出;可以接受 I/O Stream 作为输入和输出;当然也支持用户自定义形式的输入和输出。图 5 显示了这种依赖关系:
图 5. XSLT 框架的依赖关系

转换框架的输入输出对象的类型并不要求是一一对应的。比如,使用 DOMSource 做为输入,可以使用 StreamResult 作为输出。清单 5 是一段伪代码,用来显示 JDK 将不同 javax.xml.transform.Source 转换成不同 javax.xml.transform.Result 子类型的过程:
清单 5. JDK 转换框架的转换过程
| // Construct input 1. factory = XMLParserDocumentFactory->NEW 2. parser = factory->NewParser 3. document = parser->Parse(File) // Wrap input/output 4. source = Source->NEW( document ) 5. sink = Result->NEW // Construct transformer 6. tFactory = TransformerFactory->NEW 7. transformer = tFactory->NewTransformer // Transform 8. transformer->Transfer( source, sink) |
通过这个过程的转化,一个 javax.xml.transform.Source 可以转化成为类型 javax.xml.transform.Result。JDK 提供了如 图 5 所示的 4 种 Result 子类型,用户也可以定义自己的 Result 类型。另一方面,用户自定义的数据解析器或者数据文件,也可以作为 Transformer 的输入。下面一个例子,针对一个数据文件,首先生成了一棵 DOM 树,然后又根据这棵 DOM 树,提取了所有的联系信息,生成了一个文本文件。清单 6 给出了这个数据文件:
- 本文关键词:

