admin 管理员组文章数量: 1086019
2024年4月19日发(作者:属性克制表宠物小精灵)
JSP XML文档解析
在应用程序中,经常需要对XML文档进行分析,以检索、修改、删除或重新
组织其中的内容。例如,将应用程序运行所需的一些配置信息,以XML的格式保
存在文件中,在程序启动时,读取XML文件,从中取出有用的信息,这就需要对
XML文档解析。
XML处理都从解析开始。无论使用高层编程语言(如XSLT)还是低层Java
编程,第一步都是要读入XML文件,解码结构和检索信息等等,这就是解析。解
析可能是开发人员能够使用的最基本的服务。解析文档时面临的第一个选择是采用
现成的解析库(基本上每种编程语言都有,包括COBOL[Common Business Orient
ed Language])还是自己创建一个。答案非常简单:选择现成的库。
在解析XML文档时,通常是利用现有的XML解析器软件对XML文档进行分
析(除非本身开发的就是XML解析器),而编写的应用程序则通过解析器提供的AP
I接口得到XML数据。其实现过程如图7-8所示:
XML解析器
API
应用
程序
XML文档
图7-8 解析XML文档
如果不同的厂商开发的XML解析器提供的API都依赖于自身的产品,那么应
用程序要使用解析器,就只能使用特定厂商的API。假如以后应用程序需要更换解
析器,那么只能重写编写代码。庆幸的是,多数解析器提供了至少两种API,通常
是一个对象模型API和一个事件API(也称为流API)。比如,Java平台同时提供了
DOM(文档对象模型)和SAX(Simple API for XML)。这两套API提供了相同
的服务:文档解码、可选的验证、名称空间解析等等。差别不在于服务而在于API
使用的数据模型。
现在普遍使用的解析器都是用Java编写的。常见的解析器有下面几种:IBM
XML4J、Apache Xerces、Sun Project X、Microsoft MSXML、Oracle XML Parser
for Java和James Clark XP。若读者喜欢,可以直接从网上下载。
一个XML Parser(解析器)是一段可以读入一个文档并分析其结构的代码。XML
解析器是XML和应用程序之间存在的一个软件组织,主要起一个桥梁的作用,为
应用程序从XML中提取所需要的数据。解析器从文档中提取实际的数据,然后创
建一系列的事件或者是新的数据结构。解析器也能够检查文档是否是well-formed,
也就是说是否严格的遵守了XML规范,而这是处理XML文档之前就必须进行的工
作。另外,解析器还应该能够判断一个文档是否遵守DTD/Schema标准,如果该文
档有一个DTD/Schema的话。我们知道,XML不像HTML,它本身不关心应用程
序如何展示它的内容,而关于内容的展示形式可以由CSS或者XSL来指定。所以
一个良好的XML解析器还需要对CSS和XSL进行分析处理。
解析器的不同不仅在于它们是否支持完整性检查和文档表现形式转化,而且还
在于它处理文档的方式。基于事件的解析器实际上是通过串行的方式来处理文档,
也就是说当它遇到一个开始或者结束标记的时候,它向应用程序发送消息,由应用
程序决定如何进行处理。SAX就是这样的一个API集合。第二种方法就是根据文档
的内容建立一个层次的数据结构,这就是DOM API的工作方式。实际上,一个解
析器的质量的好坏的评定标准在于它对XML标准的支持程度。当前最好的是Sun
的解析器。
一个XML解析器可以支持多个API接口,如DOM接口或SAX接口,可以把
这些解析器称为DOM解析器或SAX解析器。现在比较常用的解析器有DOM解析
器、SAX解析器、DOM4J和JDOM等。
DOM
DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是
以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找
特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工
作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以
及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以
修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导
航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。
另一方面,对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因
此使用其他手段来处理这样的数据会更好。这些基于事件的模型,比如SAX。
SAX
SAX的处理非常类似于流媒体。分析能够立即开始,而不是等待所有的数据被
处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在
内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整
个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者
DOM快许多。
JDOM
JDOM的目的是成为Java特定文档模型,它简化与XML的交互并且比使用D
OM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进。正
在考虑通过“Java规范请求JSR-102”将它最终用作“Java标准扩展”。从2000年
初就已经开始JDOM开发。
DOM4J
DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支。
它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Sch
ema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示
的选项,它通过DOM4J API和标准DOM接口具有并行访问功能。从2000下半年
开始,它就一直处于开发之中。
版权声明:本文标题:JSP XML文档解析 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713510636a638290.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论