本书是为要在系统中集成XML的Java编程人员编写的,是介绍如何使用Java编程语言处理XML文档的实用而且综合的指南与教程。书中简要概述了XML基础,包括XML语法、DTD、模式、有效性、样式单和XML协议XML-RPC、SOAP与RSS。本书的核心内容是深入介绍了Java编程人员用Java生成与操纵XML文档时所要的关键XML API,包括SAX、DOM(文档对象模型)和JDOM。此外,还介绍了这些核心API的许多重要补充,包括XPath,XSLT,TrAX与JAXP。
第一部分 XML
第1章 XML与数据
1.1 XML的优点
1.2 XML语法
1.3 有效性
1.4 样式单
1.5 小结
第2章 XML协议: XML-RPC与SOAP
2.1 XML消息格式
2.2 HTTP传输协议
2.3 RSS
2.4 自定义请求
2.5 XML-RPC
2.6 SOAP
2.7 自定义协议
2.8 小结
第3章 使用XML与Java
3.1 Fibonacci数
3.2 编写XML
3.3 输出流、写入器与编码方式
3.4 简单XML-RPC客户程序
3.5 简单SOAP客户程序
3.6 小服务
3.7 小结
第4章 将平面文件转换成XML
4.1 预算
4.2 模型
4.3 输入
4.4 确定输出格式
4.5 从平面数据建立层次结构
4.6 不用Java的方法
4.7 关系型数据库
4.8 小结
第5章 读取XML
5.1 InputStreams与Readers
5.2 XML分析器
5.3 SAX
5.4 DOM
5.5 JAXP
5.6 JDOM
5.7 dom4j
5.8 ElectricXML
5.9 XMLPULL
5.10 小结
第二部分 SAX
第6章 SAX
6.1 SAX简介
6.2 分析
6.3 回调接口
6.5 接收文档
6.6 处理属性
6.7 接收字符
6.8 接收处理指令
6.9 接收名字空间映射
6.10 可忽略空白符
6.11 接收跳过的实体
6.12 接收定位器
6.13 ContenHandler所缺的信息
6.14 小结
第7章 XMLReader接口
7.1 建立分析器对象
7.2 输入
7.3 异常与错误
7.4 特性与属性
7.5 DTDHandler
7.6 小结
第8章 SAX过滤器
8.1 过滤器体系结构
8.2 XMLFilter接口
8.3 内容过滤器
8.4 XMLFilterImpl类
8.5 分析非XML文档
8.6 多处理器适配器
8.7 小结
第三部分 DOM
第9章 文档对象模型
9.1 DOM的演变
9.2 DOM模块
9.3 应用程序特定DOM
9.4 树
9.5 DOM Java分析器
9.6 用DOM分析器分析文档
9.7 Node接口
9.8 NodeList接口
9.9 JAXP序列化
9.10 DOMException
9.11 选择SAX与DOM
9.12 小结
第10章 用DOM建立XML文档
10.1 DOMImplementation
10.2 定位DOMImplementation
10.3 Document接口作为抽象工厂
10.4 Document接口作为节点类型
10.5 规范化
10.6 小结
第11章 DOM核心
11.1 Element接口
11.2 NamedNodeMap接口
11.3 CharacterData接口
11.4 Text接口
11.5 CDATASection接口
11.6 EntityReference接口
11.7 Attr接口
11.8 ProcessingInstruction接口
11.9 Comment接口
11.10 DocumentType接口
11.11 Entity接口
11.12 Notation接口
11.13 小结
第12章 DOM遍历模块
12.1 NodeIterator
12.2 NodeFilter
12.3 TreeWalker
12.4 小结
第13章 DOM输出
13.1 Xerces序列化
13.2 OutputFormat
13.3 DOM Level 3
13.4 小结
第四部分 JDOM
第14章 JDOM
14.1 JDOM简介
14.2 用JDOM生成XML元素
14.3 用JDOM建立XML文档
14.4 用JDOM编写XML文档
14.5 文档类型声明
14.6 名字空间
14.7 用JDOM读取XML文档
14.8 导航JDOM树
14.9 与DOM程序通信
14.10 与SAX程序通信
14.11 Java集成
14.12 JDOM的缺点
14.13 小结
第15章 JDOM模型
15.1 Document类
15.2 Element类
15.3 Attribute类
15.4 Text类
15.5 CDATA类
15.6 ProcessingInstruction类
15.7 Comment类
15.8 名字空间
15.9 DocType类
15.10 EntityRef类
15.11 小结
第五部分 XPath/XSLT
第16章 XPath
16.1 查询
16.2 XPath
16.3 定位路径
16.4 表达式
16.5 XPath引擎
16.6 DOM Level 3 XPath
16.7 Jaxen
16.8 小结
第17章 XSLT
17.1 XML转换
17.2 TrAX
17.3 用Java扩展XSLT
17.4 小结
第六部分 附录
附录A XML API速查手册
附录B SOAP 1.1模式
附录C 推荐读物
译后记
一天晚上,五位新加入Elephants公司的开发人员坐在一起熟悉公司的订单处理系统。他们钻进主服务器中一大堆XML文档的目录中。“这是什么?”小组长激动地问。他们过去谁也没有听说过XML,因此准备了解手头的文件,看看这个奇怪而奇妙的新技术到底是怎么回事。
第一位开发人员擅长于Oracle数据库优化,因此打印了一堆FileMaker数据库产生的FMPXMLRESULT文档,开始进行分析,这个数据库中存放了所有订单。“这就是XML,我明白了,也没什么新东西。不难看出,XML文档不过就是表格”。
“什么,就是表格?”第二位开发人员说,他非常熟悉面向对象理论,手头有一堆XMI文档对系统的UML框架进行了编码。“即使VisualBasic编程人员也能看出,XML文档不是表格,表格关系中不允许复制,除非这是些奇怪的变种。这些XML文档明摆着就是类和对象。事实上,这是一目了然的。XML文档是对象,DTD是类”。
“对象?真是奇怪的对象”,第三位开发人员说,他是一位具有一定知名度的Web设计人员,把订单处理系统的XHTML用户文档装入Mozilla中。“我没有看到任何类型。如果你认为这是对象,我拒绝安装你的软件。但从这么多样式单不难看出,XML就是更新的HTML”。
“HTML?别开玩笑”,第四位说,他是来自MIT的计算机科学教授,曾经致力于用XSLT样式单和Schematron模式检验所有其他文档。“看看层次结构的整洁嵌套,每个标志与相应标志恰好匹配,HTML什么时候有这么漂亮。这是个S表达式,没什么新东西,1882年就已经出现这个思想了”。
“S表达式?”技术作家问,他手头有一大堆用DocBook编写的项目文档。“对你们这些博学之士,也许是这样吧。但是我觉得这就像是FrameMaker MIF文件。不过熟悉GUI好像有点费事”。
他们就这样相互争吵,直到深夜,谁也不服谁,每个人都引经据典,却又都不屑看看别人的证据。事实上,他们可能现在还在争论,你甚至还能听到他们的争吵声。当然,他们的错误在于执意把XML归结到他们已经熟悉的技术,而不是把XML当做全新的技术。XML可以存储数据,但不是数据库。XML可以将对象序列化,但XML文档不是对象。XML可以编写Web页面,但XML不是HTML。XML可以编写功能性(和其他)编程语言,但XML本身不是编程语言。XML可以写书,但XML不是桌面出版软件。
XML是个新东西,在计算世界中没有先例。XML继承了过去的思想,一些固执的人总想通过数据库、对象、功能性或S表达式之类的有色眼镜来看XML,但XML并不是这些东西,而是个新东西,是一个在计算世界中没有先例的新概念。要理解XML,首先要把它看成一个新概念,而不是跨进昨天的旧框框中。
世界上已经有许多工具、APl和应用程序,使XML看上去像是开发人员熟悉的某个旧东西——像某种数据库、某种对象或远程过程调用。这些API在限制性的可预测环境中也许有用,但不适合处理更一般格式的XML。这些APl在有限领域中能够顺利工作,但超出人为定义的边界时就行不通了。XML是可扩展的,但许多为XML设计的工具并没有这么强的可扩展性。
本书要介绍如何处理完全一般性的XML,而不是局限于某一个方面。XML就是XML,而不是任何别的东西。我们介绍如何设计程序,处理真正意义上的XML:有效与无效、混合与非混合、类型与非类型,以及这些特性的不同组合。为了达到这个目标,本书主要考虑不会隐藏XML本质的API。特别地,有三大类Java API正确地建模XML,而不是建模XML文档的特定类或XML的某个狭窄子集。这些Java API分别是:
●SAX(XML的简单APl,SimpleAPIforXML)
●DOM(文档对象模型,DocumentObjectModel)
●JDOM,Java本地API
这些API是本书的核心。此外,书中还将介绍基本APl的几个前提与补充项目,包括:
●XML语法
●DTD、模式与有效性
●XPath
●XSLT与TrAX API
●JAXP是SAX,DOM,TrAX和几个工厂类的结合
由于书中要用几个XML应用程序例子演示这些API,因此还要详细介绍XML-RPC,SOAP与RSS。但是,本书介绍的技术不局限于这三类应用程序。