摘 要 在计算机领域,利用Java解析xml文件有着实际利用价值与现实意义。文章对XML语言进行了简要的介绍,XML作为简单的配置文件可以帮助我们更高效地运行程序。在介绍了XML的基本概念和主要应用的基础上,进一步分析了Java解析XML文档的两种主流经典方法:一种是文档对象模型DOM(Document Object Model),另外一种是XML简单接口SAX(Simple API for XML)。
关键词 XML作用;XML解析;DOM;Java;SAX
中图分类号:TP311 文献标识码:A 文章编号:1671-7597(2014)06-0120-01
现代社会所使用的程序和数据越来越大,对计算机硬件的需求标准越来越高。当我们用到的数据量不大,对硬件的要求不高的时候,我们不希望再使用庞大的数据库,而是希望能够找到能够减轻系统负担的方法。XML作为简单的配置文件可以帮助我们更高效地运行程序,它的独立于平台的特性是它最具特色的地方。XML可以将内容和表现分离,同一个xml源文档只写一次,但可以用不同的方法表现出来。
1 XML概述
1.1 XML简介
可扩展标记语言(Extensible Markup Language,XML)是一种标记语言,它为文档编码格式定义了一系列的标准规则,这些规则简单明了,不论是用户还是机器都能够很容易的识别。XML的设计目标是为了提高因特网信息的简洁性、普适性和可用性。尽管XML最初主要用于文档方面,但是现在它可以被广泛地应用于任意数据结构的表示,比如web服务等。
根据定义,XML文档是由一系列字符构成。在一个XML文档中,几乎每一个合法的Unicode字符都可能出现。XML允许使用任何Unicode-defined编码,和任何其他也出现在Unicode编码的字符。XML处理器还提供了一种机制,可以在没有任何先验知识的情况下非常可靠地确定哪些编码可以使用。
XML文档由标记和内容组成,它们可以通过简单的语法规则进行区分。一般来说,标记以< >作为符号,即
1.2 当前XML的主要应用
最近几年已经用XML开发了数以百计的文档格式,包括RSS、Atom、SOAP、XHTML等。基于XML格式的工具已经成为许多办公软件的默认工具,包括微软办公室(Office Open XML)、OpenOffice.org、LibreOffice和苹果的iwork。XML也被用作通信协议的基本语言,比如XMPP。微软的应用程序使用XML作为配置文件。苹果公司已经实现了基于XML的注册。
XML业已成为互联网数据通信的主流方式之一。RFC3023规定了互联网媒体用XML发送信息的构造方式。它还定义了以XML设计应用程序和以XML设计文档的媒体类型。
XML具有如下特色:1)用来进行更有意义的搜索;2)开发灵活的Web应用软件;3)集成不同来源的数据;4)多种应用得到的数据;5)数据的本地计算和处理;6)数据的多样型显示;7)数据的粒状更新;8)在Web上发布数据;9)升级性;10)开放的标准。
2 Java解析XML的两种经典方法
2.1 DOM:基于对象的XML解析技术
DOM是用与平台和语言无关的方式表示XML文档的W3C标准,它是以层次结构组织的节点或信息片断的集合,它是一种基于树型的解析技术,将XML文档一次性解析,生成一个位于内存中的对象树用以描述该文档。
利用Java的DOM解析XML需要经过以下几个步骤:1)得到DOM解析器的工厂实例;2)从DOM工厂获得DOM解析器;3)把要解析的XML文档转化为输入流;4)解析XML文档的输入流;5)得到XML文档的根节点;6)得到节点的子节点;7)取得节点的属性值;8)轮循子节点。
2.2 SAX:基于事件驱动的XML解析技术
SAX解析器采用了基于事件的模型,与DOM不同的是它并不是由W3C官方所提出的标准。SAX是一种轻量型的方法,它不需要将数据全部载入内存而只在读取数据时检查数据。对于大型文档具有显著优势。它按照XML文件的顺序一步一步的来解析,它将XML文档分解为一系列的事件,由独立的事件处理器来决定处理方式。
在JAVA的SAX接口中,事件源是org.xml.sax包中的XMLReader,它通过parser()方法来解析XML文档,并根据文档的内容产生事件。而事件处理器则是org.xml.sax包中的ContentHander、DTDHander、ErrorHandler,以及EntityResolver这4个接口,它们分别处理事件源在解析XML文档过程中产生的不同种类的事件。
2.3 两种解析方式的对比
SAX解析器是基于事件驱动的,无需将整个文档载入内存,系统开销低;不需要获知整个XML数据,使用者只需要监听自己感兴趣的事件即可,处理速度快。但不能随机访问XML中的节点,只支持顺序访问,而且不能修改文档。
DOM解析器把XML文档转化为一个包含其内容的树,将整棵树读入内存中,可以对树进行遍历,可以对XML文档随机访问,可以修改文档,而且操作要比SAX简单,容易上手。然而由于使用DOM解析器的时候需要将整个文档一次性解析完,内存代价比较高,相对于SAX解析器,对于大文档的成本要高得多。
3 总结
XML具有重要的作用,DOM和SAX这两种解析技术也是各有特点。我们在Java平台上解析时,应该根据不同的需求选择不同的解析方法。当应用程序对文档的修改和随机访问比较多时,可以优先考虑DOM解析。SAX是读取和操作XML数据的更快速、更轻量的方法。
参考文献
[1]李刚.疯狂XML讲义[M].北京:电子工业出版社,2009.
[2]张迪,朱敏,张凌立.基于SAX的XML解析与应用[J].计算机与数字工程,2008,36(7):103-106.
[3]邓超,熊选东.一种基于DOM的Web信息提取方法[J].微型电脑应用,2007,23(3): 49-52.
[4]邢诒俊.浅谈XML解析技术[J].华南金融电脑,2009(11):51-52.
作者简介
张洁(1981-),女,镇江高等职业技术学校二级教师。