SAX与DOM的比较

SAX:simple api for XML:通读文档,设置文档的事件处理器,在处理器中解析文件,不需要在内存中保存整个文档,占用资源小。

DOM:Document object model:全部读入内存,根据树壮结构解析。资源占用大。

DOM解析器是通过将XML文档解析成树状模型并将其放入内存来完成解析工作的,而后对文档的操作都是在这个树状模型上完成的。这个在内存中的文档树将是文档实际大小的几倍。这样做的好处是结构清除、操作方便,而带来的麻烦就是极其耗费系统资源。

SAX正好克服了DOM的缺点。SAX解析器的处理过程是通读整个文档,根据文档内容产生事件,而把对这些事件的处理交由事件处理器处理。SAX不需要在内存中保存整个文档,它对系统资源的节省是显而易见的。这样在一些需要处理大型XML文档和性能要求比较高的场合就要用SAX了。

下面的表格列出了SAX和DOM在一些方面的对照:

SAXDOM
顺序读入文档并产生相应事件,可以处理任何大小的XML文档在内存中创建文档树,不适于处理大型XML文档。
只能对文档按顺序解析一遍,不支持对文档的随意访问。可以随意访问文档树的任何部分,没有次数限制。
只能读取XML文档内容,而不能修改可以随意修改文档树,从而修改XML文档。
开发上比较复杂,需要自己来实现事件处理器。易于理解,易于开发。
对开发人员而言更灵活,可以用SAX创建自己的XML对象模型。已经在DOM基础之上创建好了文档树。

通过对SAX和DOM的分析,它们各有自己的不同应用领域:

SAX适于处理下面的问题:

  1. 对大型文档进行处理。
  2. 只需要文档的部分内容,或者只需要从文档中得到特定信息。
  3. 想创建自己的对象模型的时候。

DOM适于处理下面的问题:

  1. 需要对文档进行修改
  2. 需要随机对文档进行访问,例如XSLT解析器。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值