XML解析技术之VTD-XML 简介及代码实例

发布于 2021-03-18  295 次阅读 本文共688个字


第一部分:XML解析技术简介

XML(eXtensible Markup Language,可扩展标记语言)是由World Wide Web联盟(W3C)定义的元语言,即一种关于语言的语言。 Xml的优势或者说力量源于它的数据独立性,广泛应用在分布式计算领域。

XML解析技术的分类

根据从XML中获取数据的简易性,性能和最终所得到的数据模型的不同,XML解析技术大致可分为以下四类:
1.面向文档的流式解析;
2.面向文档的对象式解析;
3.面向文档的指针式解析;
4.面向应用的对象式解析;

这四类解析技术分别处于不同的抽象层次,适用于不同的应用场景, 针对具体的应用需求,选择合适的解析技术,往往能够减少内存消耗,缩短处理时间,更方便地获取数据,提高应用系统的整体性能。

1.1 面向文档的流式解析

流式解析是解析器顺序读取XML文档,捕获的各种事件,如元素开始和元素结束等,交由程序处理。
流式解析又分为两种解析方式:
1.推式解析(SAX:Simple API for XML)
2.拉式解析(StAX:Streaming API for XML)
这两种方式的主要区别在于是由解析器还是应用程序控制读循环(读入文件的循环)

 1.1.1推式解析(SAX)

在这种解析方式中,解析器控制着读循环,在文档结束之前控制权不会返回给应用程序。

SAX是基于事件驱动的,即SAX解析器在读取XML文档的过程中生成一个事件流,并且对于每个事件通过回调事件处理程序中相应的方法来进行处理。比如元素开始和结束标记,元素内容,实体,语法分析错误等事件。

下图表示了一个Xml文件及其对应的文件流格式。

注:如图所示,回车换行也被解析成了一个字符。


粉色的花瓣,美丽地缠绕在身上。依在风里。