在过去几年中,xml 已经成为一种通用的数据格式。这篇经过修订的教程将向您介绍 java 语言中处理 xml 文档最常用的编程接口。
最普通的 xml 处理工作是 解析 xml 文档。解析包括读取 xml 文档并确定其结构和内容。xml 编程的一个好处是可以使用开放源代码的、免费的 xml 解析器读取 xml 文档。本教程主要讨论创建解析器对象、要求解析器处理 xml 文件、处理解析结果。如您所料,可以使用不同的方式完成这类常见的任务;我将分析所涉及到的标准以及什么时候应该使用这种或那种方法。
编程接口 第 2 页(共5 页)
为了简化编写处理 xml 的 java 程序,已经建立了多种编程接口。这些接口或者由公司定义,或者由标准体或用户组定义,以满足 xml 程序员的需要。本教程将讨论以下接口:
document object model (dom,文档对象模型),level 2
simple api for xml (sax), version 2.0
jdom, jason hunter 和 brett mclaughlin 创立的一种简单 java api
java api for xml processing (jaxp)
这四种接口中前三个(dom、sax 和 jdom)定义了如何访问与表示 xml 文档的内容。jaxp 包含创建解析器对象的类。要创建 dom 或 sax 解析器,您需要使用 jaxp。如果使用 jdom,jdom 库将在幕后使用 jaxp 为您创建一个解析器。总之:
使用 dom、sax 或 jdom 处理 xml 文档的内容。
如果使用 dom 或 sax,则使用 jaxp 创建解析器。
如果使用 jdom,则 jdom 库为您创建解析器。
我将考察上述每种 api 的设计目标、长处和缺点,同时还涉及到一点它们的历史以及创建这些 api 的标准体。
关于例子 第 3 页(共5 页)
本教程中包含多个使用 dom、sax 和 jdom api 的示例程序。所有这些程序都使用 xml 标记的莎士比亚十四行诗。十四行诗的结构如下:
<sonnet>
<author>
<lastname>
<firstname>
<nationality>
<yearofbirth>
<yearofdeath>
</author>
<lines>
[14 <line> elements]
</lines>
</sonnet>完整的例子请参阅 和 (下载后使用文本编辑器查看)。设置机器 在运行这些例子之前,需要对您的机器作一些设置。(假设您知道如何编译和运行 java 程序,并了解如何设置 classpath 变量。)首先请访问 apache xml project (http://xml.apache.org/xerces2-j/) 上的 xerces xml 解析器主页。您也可以直接去 下载页面 (http://xml.apache.org/xerces2-j/download.cgi)。 解压从 apache 下载的文件。根据解析器版本的不同,这样将会创建名为 xerces-2_5_0 或者类似名称的目录。所需要的 jar 文件(xercesimpl.jar 和 xml-apis.jar)应该出现在 xerces 根目录下。 访问 jdom 项目站点 并下载最新版本的 jdom (http://jdom.org/)。 解压从 jdom 下载的文件,这样将建立名为 jdom-b9 或者类似名称的目录。所需要的 jar 文件(jdom.jar)应该在 build 目录中。 最后请下载本教程的示例压缩文件 ,并解压该文件。 把当前目录 (.)、xercesimpl.jar、xml-apis.jar 和 jdom.jar 添加到 classpath 变量中。 基础 xml 解析器是读取 xml 文档并分析其结构的一段代码。这一部分将介绍 xml 解析器是如何工作的。我将讨论不同类型的 xml 解析器以及何时使用它们。本教程后面的章节将讨论如何创建解析器以及如何处理解析器给出的结果。如何使用解析器 第 2 页(共12 页) 我将在后面的章节对此详细讨论,一般而言使用解析器需要以下步骤:创建一个解析器对象 使解析器指向您的 xml 文档 处理结果 显然第三步最为复杂。一旦知道了 xml 文档的内容,比方说,您可能希望生成一个 web 页面、创建一个订单或者做一个饼图。考虑到 xml 文档所含数据的多样性,编写一个应用程序处理所有可能的输入是一项艰巨的任务。所幸的是,这里讨论的常见 xml 解析工具使这项工作大大简化了。
