新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论DOM, SAX, XPath等。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 DOM/SAX/XPath 』 → SAX教程系列二(DOM、SAX,以及何时哪个更适合)----来源:IBM developerWorks 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 9035 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: SAX教程系列二(DOM、SAX,以及何时哪个更适合)----来源:IBM developerWorks 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     yuji1998 帅哥哟,离线,有人找我吗?魔羯座1981-12-22
      
      
      威望:5
      头衔:蓝色先锋
      等级:大二(研究C++)
      文章:212
      积分:1059
      门派:XML.ORG.CN
      注册:2004/4/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yuji1998发送一个短消息 把yuji1998加入好友 查看yuji1998的个人资料 搜索yuji1998在『 DOM/SAX/XPath 』的所有贴子 访问yuji1998的主页 引用回复这个贴子 回复这个贴子 查看yuji1998的博客楼主
    发贴心情 SAX教程系列二(DOM、SAX,以及何时哪个更适合)----来源:IBM developerWorks

    欢迎您通过电子邮件nicholas@nicholaschase.com直接与作者 Nicholas Chase 联系。
          注:本教程仅供本站成员的学习和研究使用,严禁用于商业目的!
         SAX 处理是如何工作的
         SAX 在读取 XML 流的同时处理它们,这很像以前的自动收报机纸带(ticker tape)。请考虑下面的 XML 代码片断:
    <?xml version="1.0"?>
    <samples>
       <server>UNIX</server>
       <monitor>color</monitor>
    </samples>
         分析这个代码片断的 SAX 处理器一般情况下将产生以下事件:
    Start document
    Start element (samples)
    Characters (white space)
    Start element (server)
    Characters (UNIX)
    End element (server)
    Characters (white space)
    Start element (monitor)
    Characters (color)
    End element (monitor)
    Characters (white space)
    End element (samples)
    SAX API 允许开发人员捕捉这些事件并对它们作出反应。
         SAX 处理涉及以下步骤:
         1.创建一个事件处理程序。
         2.创建 SAX 解析器。
         3.向解析器分配事件处理程序。
         4.解析文档,同时向事件处理程序发送每个事件。
         基于事件的处理的优点和缺点
         这种处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX 还比它的替代者 DOM 快许多。
    另一方面,由于应用程序没有以任何方式存储数据,使用 SAX 来更改数据或在数据流中往后移是不可能的。
         DOM 和基于树的处理
         DOM 是处理 XML 数据的传统方法。使用 DOM 时,数据以树状结构的形式被加载到内存中。
         例如,在SAX 处理是如何工作的中用作例子的相同文档在 DOM 中将表示为节点,DOM 使用父子关系。
         基于树的处理的优点和缺点
         DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。
    另一方面,在内存中构造这样的树涉及大量的开销。大型文件完全占用系统内存容量的情况并不鲜见。此外,创建一棵 DOM 树可能是一个缓慢的过程。
         如何在 SAX 和 DOM 之间选择
         选择 DOM 还是选择 SAX,这取决于下面几个因素:
    1.应用程序的目的:如果打算对数据作出更改并将它输出为 XML,那么在大多数情况下,DOM 是适当的选择。并不是说使用 SAX 就不能更改数据,但是该过程要复杂得多,因为您必须对数据的一份拷贝而不是对数据本身作出更改。
    2.数据容量: 对于大型文件,SAX 是更好的选择。
    数据将如何使用:如果只有数据中的少量部分会被使用,那么使用 SAX 来将该部分数据提取到应用程序中可能更好。 另一方面,如果您知道自己以后会回头引用已处理过的大量信息,那么 SAX 也许不是恰当的选择。
    3.对速度的需要: SAX 实现通常要比 DOM 实现更快。
    SAX 和 DOM 不是相互排斥的,记住这点很重要。您可以使用 DOM 来创建 SAX 事件流,也可以使用 SAX 来创建 DOM 树。事实上,用于创建 DOM 树的大多数解析器实际上都使用 SAX 来完成这个任务!

       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    私人网站:蓝尚WEB商务平台http://www.lanshang.com     建站黄页:http://www.lanshang.com/link.asp WEB技术文库:http://www.lanshang.com/wenzhang/ 
    电子书籍: http://www.lanshang.com/ebook/  技术交流:http://www.lanshang.com/bbs/

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/5/31 0:15:00
     
     热带风暴 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:59
      门派:XML.ORG.CN
      注册:2004/6/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给热带风暴发送一个短消息 把热带风暴加入好友 查看热带风暴的个人资料 搜索热带风暴在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看热带风暴的博客2
    发贴心情 
    顶,谢谢,正需要这个
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/6/1 17:15:00
     
     river 美女呀,离线,快来找我吧!天秤座1981-10-12
      
      
      等级:大一新生
      文章:5
      积分:81
      门派:XML.ORG.CN
      注册:2004/5/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给river发送一个短消息 把river加入好友 查看river的个人资料 搜索river在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看river的博客3
    发贴心情 
    呵呵,偶也正需要了解这个呢。

    ----------------------------------------------
    菜鸟想入门,请多多指教!! 我是真的想好好学习的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/6/8 17:57:00
     
     GoogleAdSense天秤座1981-10-12
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DOM/SAX/XPath 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/3 5:39:31

    本主题贴数3,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms