按我的理解,SAX是在对xml文件的扫描过程中(实际应该和读取一个普通文件类似)遇到特征字符串(<,</ 等等)就产生相应的回调函数,扫描完成后对系统的资源就不再有要求,而DOM是在内存中将XML的结构创建了相当复杂的数据库,用户的各种查询都很方便,但是占用资源很大,我在PII200(32M内存)上跑java(XML解析),SAX可以跑3个以上,DOM2个进程就快要死机了,而且速度慢得多。

解决方案 »

  1.   

    我的理解是,XML解析器有两个标准,SAX和DOM,而JAXP只是一个实现的产品!
    SAX解析器并没有完全解析XML文档,只有当需要解析相应Tag的属性等数据时才处理。
    而DOM解析器在内存里已经完全建立了树型结构,所以代价比较大!至于是不是通过SAX来建立树型结构,我想依赖设计者的具体实现了!
      

  2.   

    Sax只是一个民间的标准,它主要是采用了回调函数来处理Xml。对系统的资源要求不高。
    而DOM对资源要求就很高。一般情况下,大文件的而且不经常修改的xml文件一般建议采用sax
    而小文件要经常修改的用dom。现在我碰到的问题是文件很大,而且经常修改,不知采取那一种好
    ,那位遇到过这种情况,推荐一下。