DOM:即Document Object Model,属于文档驱动。解析处理XML文件时,需要读取整个XML文档,存在内存中并建立DOM树,生成DOM树上的每个Node对象。DOM树生成后,可以随意存放或读取文件树的任何部分,并且可以重复读取,没有次数限制。
SAX:即Simple Api for XML,属于事件驱动,不需要读入整个文档,读入文档的过程也是SAX解析的过程,事件驱动是指一种基于回调(callback)机制的程序运行方法。SAX对内存要求比较低,因为它让开发人员自己决定所要处理的标签,尤其是当开大人员需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。
综上:
DOM优缺点:可以读取以及修改文件树任何部分,但是由于解析之前需要把文档存至内存中并生成文档树(生成文档树比较耗时),所以解析速度较慢以及占用内存较大,适合解析中小型文档。
SAX优缺点:只能顺序访问读取,不能修改,可以部分读取文档,故解析速度快,适合解析大型文档,但由于需要建立自己额XML对象模型,增加了开发难度。