xml解析是什么意思呢?

您所在的位置:网站首页 dom4j-161jar xml解析是什么意思呢?

xml解析是什么意思呢?

#xml解析是什么意思呢?| 来源: 网络整理| 查看: 265

XML解析

当数据被存储在XML文档中以后,若想操作这些数据,就必须先解析XML文档。由于XML文档是结构化文档,如果仍然使用普通文件IO进行读写,不仅效率低下,过程也非常复杂。为了避免这些问题,在实际开发中常采用DOM、SAX、DOM4J等方法对XML文档进行解析。

DOM解析简介

DOM是Document Object Model(文档对象模型)的简称,它是W3C组织推荐的处理XML的一种标准方式。

DOM以树状结构组织XML文档中的每个元素,这个树状结构允许开发人员在树中寻找特定信息。在解析XML文档时,内存中会生成与XML文档结构对应的DOM对象树。这样便能够根据树的结构,以节点形式来对文档进行操作,如图4.4所示。

图4.4 DOM方式解析XML文档

图4.4描述了用DOM方式解析XML文档的过程,XML解析器负责读入文档,将该文档转成常驻内存的树状结构,然后程序代码就可以使用节点与节点之间的父子关系来访问DOM树,并获取每个节点所包含的数据。

DOM解析实例

Java提供了相应的API封装对XML解析的操作,下面以一个实例演示以DOM方式解析XML文档。打开Eclipse,新建Java工程chapter04,在工程chapter04下新建目录lib,将dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar复制到lib目录下,鼠标右击lib目录下的上述jar包,在弹出的菜单中选择Build Path→Add to Build Path,完成jar包的导入。在工程chapter04的src目录下新建book02.xml,如例4.3所示。

接着,新建测试类TestDOM,用于解析book02.xml文档,如例4.4所示。

SAX解析简介

与DOM不同,SAX采用事件机制来解析XML文档,它基于事件驱动,是一种快速读取XML的方式。

通过SAX方式解析XML文档,涉及两个部分:解析器和事件处理器。在处理XML文档时,解析器遇到文档开始、元素开始、文本、元素结束和文档结束时会触发对应的事件,这些事件中封装了XML元素。事件处理器是用来监听并处理解析器触发的事件的,从事件处理器中可以获得解析器封装的文档内容,通过SAX方式解析XML文档的过程如图4.5所示。

图4.5 SAX方式解析XML文档

图4.5描述了用SAX方式解析XML文档的过程,SAX解析器对文档进行解析时,会触发一系列事件,这些事件将被SAX事件处理器监听。开发者要在SAX事件处理器中定义处理事件的方法,当监听到事件时,相应的方法将被调用。

SAX解析实例

为了让大家理解得更加深刻,下面通过一个实例来演示SAX方式解析book02.xml文档。新建一个类MyHandler,该类即为事件处理器,需要继承SAX提供的DefaultHandler类并重写其中的方法,如例4.5所示。

接下来,新建一个类TestSAX,该类用于测试通过SAX解析XML文档,如例4.6所示。

DOM与SAX的对比

DOM通过把XML文档转化成DOM树进行解析,SAX采用事件机制对XML文档进行解析,作为XML解析的重要方式,它们之间存在很大的区别,具体如表4.3所示。

表4.3 XML与HTML对比

对比项DOMSAX解析机制DOM模型触发事件资源占用一次性将整个XML文档读入内存并转化成DOM树,解析速度慢,占用资源大按顺序逐行解析,无须将XML文档一次性全部装入,速度快,占用内存资源较少访问与修改即可读取元素内容,也可修改元素内容,整个解析过程DOM树常驻内存,支持重复访问只能访问元素内容,不支持修改元素内容,不保存已访问内容,想要重复访问,只能再次解析应用场景1.需要对XML文档进行修改 2.需要随机对XML文档进行访问1.对大型XML文档进行处理 2.只需要XML文档的部分内容,或者只需要从XML文档中得到特定信息 3.开发者想自定义对象模型

DOM4J简介

DOM4J是一个由http://dom4j.org 出品的开源XML解析包,从表面看,它类似于前面讲过的DOM机制,但实质上,DOM4J的处理方式比DOM机制更简单一些。

DOM4J采用面向接口的方式处理XML文档,它对底层原始的多种XML解析器进行了高度封装,完全支持DOM、SAX等机制,在很大程度上简化了XML的解析方式。

DOM4J的最大特色是其提供的接口,在使用DOM4J进行XML解析时,开发者只需调用接口实现相关功能,无需关注接口的底层实现。关于DOM4J的常用接口,具体如表4.4所示。

表4.4 DOM4J的常用接口

接口名称功能描述interface org.dom4j.Node它是DOM4J树中所有元素的根接口interface org.dom4j.Attribute定义了XML元素的属性interface org.dom4j.Branch指能够包含子节点的节点,子接口是Element和Docuemntinterface org.dom4j.CDATA定义了XML CDATA区域interface org.dom4j.CharacterData是一个标识接口,标识基于字符的节点,是所有文本元素的父接口。interface org.dom4j.Comment定义了 XML的注释内容interface org.dom4j.Document定义了XML文档interface org.dom4j.DocumentType定义 XML DOCTYPE声明interface org.dom4j.Element定义XML元素interface org.dom4j.ElementHandler定义了Element 对象的处理器interface org.dom4j.ElementPath被 ElementHandler使用,用于取得当前正在处理的路径层次信息interface org.dom4j.Entity定义 XMLentityinterface org.dom4j.NodeFilter定义了在DOM4J节点中产生的一个滤镜或谓词的行为(predicate)interface org.dom4j.Text定义 XML 文本内容interface org.dom4j.Visitor用于实现 Visitor模式interface org.dom4j.XPath在分析一个字符串后会提供一个 XPath 表达式

DOM4J解析实例

前面已经提到,使用DOM4J解析XML文档是相对简单的,下面通过一个实例来演示解析过程。新建一个测试类TestDOM4J,该类用于测试通过DOM4J解析book02.xml文档,具体代码如例4.7所示。

XPath解析简介

Xpath的全称是XML Path Language(XML路径语言),是一门在 XML 文档中查找信息的语言。XPath的功能有些类似于SQL,发送SQL命令可以从数据库中获得需要的数据,同样,通过给出XPath路径信息则可以从XML文档中查找出符合条件的元素。

Xpath是W3C XSLT 标准的主要因素,应用非常广泛,本书主要针对在DOM4J中使用xPath技术进行讲解。

要使用XPath获取 XML文档中的节点或节点集,首先要理解路径表达式的概念。XPath的路径表达式是有一定语法要求的,XPath中常用的特殊字符,具体如表4.5所示。

表4.5 Xpath中常用的特殊字符

常用字符功能描述nodename选取此节点的所有子节点/从根节点选取//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置.选取当前节点..选取当前节点的父节点@选取属性

为了让大家理解表4.5中特殊字符的用法,下面给出一些常用的路径表达式实例,具体如表4.6所示。

表4.6 Xpath的路径表达式实例

表达式实例说明booklist选取booklist的所有子节点/ booklist选取根节点booklistbooklist/ computerbooks选取属于 booklist的子元素的所有computebooks元素。// computerbooks选取所有computerbooks子元素,而不管它们在文档中的位置。booklist// computerbooks选择属于booklist元素的后代的所有computerbooks元素,而不管它们位于booklist 之下的什么位置。//@lang选取名为 lang 的所有属性

XPath解析实例

学习了Xpath路径表达式的概念后,通过一个实例来演示在DOM4J中使用Xpath技术。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3