SAX解析XML文件采用事件驱动的方式进行,也就是说,SAX是逐行扫描文件,遇到符合条件的设定条件后就会触发特定的事件,回调你写好的事件处理程序。使用SAX的优势在于其解析速度较快,占用内存较少(相对于DOM而言)。而且SAX在解析文件的过程中得到自己需要的信息后可以随时终止解析,并不一定要等文件全部解析完毕。凡事有利必有弊,其劣势在于SAX采用的是流式处理方式,当遇到某个标签的时候,它并不会记录下以前所遇到的标签,也就是说,在处理某个标签的时候,比如在 startElement方法中,所能够得到的信息就是标签的名字和属性,至于标签内部的嵌套结构,上层标签、下层标签以及其兄弟节点的名称等等与其结构相关的信息都是不得而知的。实际上就是把XML文件的结构信息丢掉了,如果需要得到这些信息的话,只能你自己在程序里进行处理了。所以相对DOM而言,SAX处理XML文档没有DOM方便,SAX处理的过程相对DOM而言也比较复杂。

 

为了说明sax解析xml的过程,此xml文件非标准规范的xml文档

books.xml的内容:

<?xml version='1.0' encoding='UTF-8'?>
<books>---books---
    <book id="12">---book---
        <name>thinking in java</name>---/name---
        <price>85.5</price>---/price---
    </book>---/book---
    <book id="15">---book2---
        <name>Spring in Action</name>---/name2---
        <price>39.0</price>---/price---
    </book>---/book2---
</books>---/books---
View Code

相关文章: