XML解析技术的介绍

1.四种常见的XML解析技术

常见的xml解析技术

2.SAX解析方式
SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析。
其优缺点分别为:
优点: 解析可以立即开始,速度快,占用内存少
缺点: 不能对节点做修改
适用于数据量较大的XML

DOM解析方式
DOM:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式。DOM解析器在解析XML文档时,会把文档中的所有元素,按照其出现的层次关系,解析成一个个Node对象(节点)。
其优缺点分别为:
优点:把xml文件在内存中构造树形结构,可以遍历和修改节点
缺点: 如果文件比较大,内存有压力,解析的时间会比较长
适用于多次访问XML

dom4j
DOM4J是dom4j.org出品的一个开源XML解析包
优点:是一个易用的、开源的库。
它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX。
最大的特色是使用大量的接口

读写XML文档主要依赖于org.dom4j.io包,其中提供DOMReader和SAXReader两类不同方式

3.DOM4J读取XML API
SAXReader读取XML文档
使用SAXReader需要导入dom4j-1.6.1.jar包。其是DOM4J的一个核心API,用于读取XML文档。
DOM4J是一个Java的XML API,用来读写XML文件的。DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。

3.1创建SAXReader来读取XML文档。
SAXReader reader = new SAXReader();

3.2使用SAXReader读取了一个指定的文件,调用的方法是:
Document reader(File file)
该方法会读取给定的文件,并将其封装到一个名为Document的对象中。

3.3通过Document获取Element
Document 对象是一棵文档树的对象,可为我们提供对文档数据的最初(或最顶层)的访问入口。
当我们得到Document后就相当于我们得到了XML描述的整个树结构。那么我们就来开始解析的第一步工作,获取根元素。

获取根元素前,我们需要一个叫Element的类。Element用于描述XML中的一个元素。元素可包含属性、其他元素或文本。如果元素含有文本,则在文本节点中表示该文本。

3.4获取根元素
Document的方法:
Element getRootElement()
用来获取当前XML文档中的根元素。

3.5Element
element方法
当我们通过解析XML得到一个Element对象时,如何获取该对象所表示的元素的一些相关信息呢?

其中Element提供了一个方法:
Element element(String name)
该方法用于获取当前元素下指定名字的子元素。如果当前元素下包含若干个同名子元素,那么element方法会获取该元素中第一个子元素。
如果我们希望获取当前元素下所有同名的子元素,我们可以使用elements方法。

elements方法
Element提供了另一个方法用于获取当前元素下所有子元素,其方法为:
List elements()

elements还有重载方法,比如我们希望获取当前元素下同名的所有子元素时,我们可以使用:
List elements(String name)
该方法会获取当前元素下所有给定名字的子元素。

getName方法
Element提供了一个方法,用于获取当前元素的名字:
String getName()

getText方法
Element提供了一个方法,用于获取元素的文本节点(起始标记与结束标记之间的文本内容)
String getText()

Element提供了一个方法,用于获取指定元素的文本
String elementText(String name)

attribute方法
Element的attribute方法用于获取当前元素的属性信息,其方法定义为:

Attribute attribute(int index)
获取当前元素的指定属性,index为索引,从0开始。

Attribute attribute(String name)
获取当前元素的指定名字的属性。

3.6Attribute
Attribute类的每一个实例用于描述一个元素中的某个属性信息。根据该对象我们通常会获取其对应的属性名与属性值的信息

getName方法
String getName() : 获取属性的名字

getValue方法
String getValue() : 获取属性的值

猜你喜欢

转载自blog.csdn.net/qq_42902470/article/details/85124702