XML简介
为了便于理解JAXP的内容,简单介绍XML的基本知识。有关语法和用途的内容请参考w3school的XML教程。
什么是 XML?
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义,您需要自行定义标签
XML 被设计为具有自我描述性
XML 是 W3C 的推荐标准
<?xml version="1.0" encoding="utf-8"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
结合示例,我们知道XML 被设计用来结构化、存储以及传输信息。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理 XML。不过,能够读懂 XML 的应用程序(XML解析器)可以(基于DOM,SAX,StAX) 有针对性地处理XML 的标签。这就是项目中需要解决的问题—XML解析。
可以看出根据XML解析器的实现机制不同,主要分为DOM,SAX,StAX。
DOM简介
DOM (Document Object Model,文档对象模型)定义了访问和操作文档的标准方法。
什么是DOM?
DOM 是 W3C(万维网联盟)的标准。
DOM 定义了访问 HTML 和 XML 文档的标准:
“W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。”W3C DOM 标准被分为 3 个不同的部分:
- 核心 DOM - 针对任何结构化文档的标准模型
- XML DOM - 针对 XML 文档的标准模型
- HTML DOM - 针对 HTML文档的标准模型
什么是 XML DOM?
XML DOM 是:
- 用于 XML 的标准对象模型
- 用于 XML 的标准编程接口
- 中立于平台和语言
- W3C 的标准
XML DOM 定义了所有 XML 元素的对象和属性,以及访问它们的方法(接口)。
换句话说:XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。
XML DOM 是将 XML 文档作为一个树形结构,而树叶被定义为节点(如下图)。
可以类比HTML DOM,更多关于XML DOM的内容,请参考w3school的XML DOM教程。
SAX简介
SAX ( Simple API for XML ),是一个用于处理XML事件驱动的“推”模型,虽然它不是W3C标准,但它却是一个得到了广泛认可的API。
什么是SAX?
SAX解析器不像DOM那样建立一个完整的文档树,而是在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问。
常见的事件处理器有三种基本类型:
● 用于访问XML DTD内容的DTDHandler
● 用于低级访问解析错误的ErrorHandler
● 用于访问文档内容的ContentHandler,这也是最普遍使用的事件处理器。
StAX简介
StAX (Streaming API for XML),是一种针对XML的流式拉分析API.
什么是StAX?
StAX提供了两套API用来处理XML,分别提供了不同程度的抽象。基于指针的 API 把 XML 作为一个标记(或事件)流来处理;应用程序可以检查解析器的状态,获得解析的上一个标记的信息,然后再处理下一个标记,依此类推。这是一种低层 API,尽管效率高,但是没有提供底层 XML 结构的抽象。基于迭代器的 API 把 XML 作为一系列事件对象来处理。应用程序只需要确定解析事件的类型,将其转换成对应的具体类型,然后利用其方法获得属于该事件的信息。
以上只是对JAXP相关知识的简单介绍,结合后续的代码示例会有更深入的理解。
参考资料:
XML 新手入门基础知识
XML 新手入门
JAXP解析XML(基于DOM模型)
JavaXML
XML解析器
Jaxp :Dom解析Xml文档和SAX解析Xml文档学习笔记
Java6.0新特性之StAX–全面解析Java XML分析技术
The Evolution of JAXP
An Introduction to StAX
推荐oracle的JAXP官方教程
Trail: Java API for XML Processing (JAXP)
参考web Services 教程
The Java Web Services Tutorial