首页
论坛
门户
空间
手机版
IXPUB
插件
收藏
设置
注册
登录
商店
搜索
培训
Wiki
Blog
归档
丛书
退出
ITPUB论坛
»
开发工具和语言
»
.NET软件架构与模式
» SAX 与DOM
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
电梯
|
好评
|
打印
|
推荐
|
订阅
|
收藏
标题: SAX 与DOM
Arraychooli
一般会员
精华贴数 2
个人空间
0
技术积分 430 (4586)
社区积分 0 (121580)
注册日期 2004-6-28
论坛徽章:1
#1
使用道具
发表于 2004-7-24 08:08
SAX 与DOM
作为通用的XML处理接口(API),SAX和DOM是目前W3C推荐并标准化了的两个规范。也是开发人员日常使用得最多的XML技术之一。
到底,这两个接口有什么不同呢,如何使用这两个接口和在什么时候用什么接口呢?
希望大家发表一些见解。帮助深入了解这两个API的实际应用情况。
__________________
观察世界,创造世界
itsuperman
版主
精华贴数 1
个人空间
0
技术积分 992 (1899)
社区积分 12 (9767)
注册日期 2001-11-9
论坛徽章:3
#2
使用道具
发表于 2004-7-24 19:58
偶发表一下吧
简单来说, 用DOM来处理一份XML文本文件, 它所做的第一件事就是解析文件, 它把文件中的元素, 属性, 注释,处理指令, 甚至构成属性的文本都视为一个个叫节点的东西,然后在内存中创建一 棵节点树来表示这个XML文档. 开发者就可以通过节点树访问文档的内容, 并且进行修改.
而SAX就相对有点抽象, 它是通过一系列的事件让你访问XML文档的信息.它的做法就是遍历整个XML文档, 并且根据遇到的标记激活事件.
__________________
我喜欢X元素, 因为它代表一种未知.所以我衷情于XML.itsuperman22@hotmail.com
chooli
一般会员
精华贴数 2
个人空间
0
技术积分 430 (4586)
社区积分 0 (121580)
注册日期 2004-6-28
论坛徽章:1
#3
使用道具
发表于 2004-7-24 23:12
补充一点,使用DOM的程序在解析完XML后将会得到一个描述目标XML的DOM树,然后程序根据树的通用API来进行进一步的处理;而使用SAX的程序,在解析完XML以后将不在存在XML的任何信息,SAX是一个低级的基于XML标记格式处理的API,程序主要捕抓感兴趣的事件。
我的问题是想请教针对这两者在实际的应用例子。有人做过吗?
__________________
观察世界,创造世界
Joy
一般会员
精华贴数 0
个人空间
0
技术积分 202 (9454)
社区积分 0 (49588)
注册日期 2001-11-25
论坛徽章:0
#4
使用道具
发表于 2004-7-26 07:04
我也没做过, 不过看来SAX适合处理比较大的XML文件, 而DOM在编辑XML方便有优势.
XML in a Nutshell, 2nd Edition
18.1.2 DOM Strengths and Weaknesses
Like all programming tools, the DOM is better for addressing some classes of problems than others. Since the DOM object hierarchy stores references between the various nodes in a document, the entire document must be read and parsed before it is available to a DOM application. This step also demands that the entire document be stored in memory, often with a significant amount of overhead. Some early DOM implementations required many times the original document's size when stored in memory. This memory usage model makes DOM unsuitable for applications that deal with very large documents or have a need to perform some intermediate processing on a document before it has been completely parsed.
However, for applications that require random access to different portions of a document at different times or applications that need to modify the structure of an XML document on the fly, DOM is one of the most mature and best-supported technologies available.
firefly
初级会员
精华贴数 0
个人空间
0
技术积分 62 (23958)
社区积分 0 (124278)
注册日期 2004-7-9
论坛徽章:0
#5
使用道具
发表于 2004-7-26 18:24
“SAX适合处理比较大的XML文件, 而DOM在编辑XML方便有优势”
SAX并不是说适合处理比较大的XML文件,由于它不需要将整个XML解释到内存里,所以耗内存少。事件驱动的它适合文档节点的查找。
如果要对XML文档进行编辑修改,就要使用到DOM,不过由于要Paser 文档到内存里去,所以如果文档太大,速度就会慢。
wangcunjiang
钝刀
精华贴数 1
个人空间
0
技术积分 1475 (1178)
社区积分 3525 (397)
注册日期 2002-9-29
论坛徽章:25
#6
使用道具
发表于 2004-8-4 14:39
简单说,只读用sax,修改用dom;大的xml用sax;
__________________
******************************************
专搞电子政务和OA,如果有需要电子政务/OA系统的或者切磋技术的同志们可以联系我。
msn:
Gmail邀请:
------------------------------ItPub常客(有时间就来)!^_^
yining
非典型性会员
精华贴数 17
个人空间
0
技术积分 13192 (87)
社区积分 12572 (122)
注册日期 2001-11-13
论坛徽章:31
#7
使用道具
发表于 2004-8-5 09:33
SAX不见的对于大型的xml就有好处。原因很简单,sax没有记忆。所以如果需要对一些容易混淆,必须记忆路径的xml进行操作,比如<root><abc>.......<all_the_same><different>text1</different>和<root><abc>.......<all_the_same><different2>text1</different2>这样的XPath进行读取,SAX会由路径的加长变得异常复杂。由此带来的内存开销的节省也可能不复存在。
__________________
Evil prevails when good men fail to act.
itsuperman
版主
精华贴数 1
个人空间
0
技术积分 992 (1899)
社区积分 12 (9767)
注册日期 2001-11-9
论坛徽章:3
#8
使用道具
发表于 2004-8-6 00:09
不能随机存取文档也是SAX的一个不足,它只能按顺序地去处理模型而不能象DOM那样随机地去存取一个文档, 例如正在被解析的元素不会知道已经或将要被解析的元素是什么, 所以, 我觉得SAX对整个XML文档的搜索是一件比较繁重的工作, 不过其实也可以用SAX从文档中挑选出所需要的部分出来, 再建立树状模型, 用DOM去处理, 这也可以实现对文档的随机存取,不过编程的难度就相对增加了.
__________________
我喜欢X元素, 因为它代表一种未知.所以我衷情于XML.itsuperman22@hotmail.com
wangcunjiang
钝刀
精华贴数 1
个人空间
0
技术积分 1475 (1178)
社区积分 3525 (397)
注册日期 2002-9-29
论坛徽章:25
#9
使用道具
发表于 2004-8-6 09:46
QUOTE:
最初由 itsuperman 发布
不能随机存取文档也是SAX的一个不足,它只能按顺序地去处理模型而不能象DOM那样随机地去存取一个文档, 例如正在被解析的元素不会知道已经或将要被解析的元素是什么, 所以, 我觉得SAX对整个XML文档的搜索是一件比较繁重的工作, 不过其实也可以用SAX从文档中挑选出所需要的部分出来, 再建立树状模型, 用DOM去处理, 这也可以实现对文档的随机存取,不过编程的难度就相对增加了.
嗯,这个方法还不错啊!
__________________
******************************************
专搞电子政务和OA,如果有需要电子政务/OA系统的或者切磋技术的同志们可以联系我。
msn:
Gmail邀请:
------------------------------ItPub常客(有时间就来)!^_^
wangcunjiang
钝刀
精华贴数 1
个人空间
0
技术积分 1475 (1178)
社区积分 3525 (397)
注册日期 2002-9-29
论坛徽章:25
#10
使用道具
发表于 2004-8-6 09:49
QUOTE:
最初由 yining 发布
SAX不见的对于大型的xml就有好处。原因很简单,sax没有记忆。所以如果需要对一些容易混淆,必须记忆路径的xml进行操作,比如<root><abc>.......<all_the_same><different>text1</different>和<root><abc>.......<all_the_same><different2>text1</different2>这样的XPath进行读取,SAX会由路径的加长变得异常复杂。由此带来的内存开销的节省也可能不复存在。
是啊,不见得大型xml就用sax,只是为了资源、效率才如此的。
__________________
******************************************
专搞电子政务和OA,如果有需要电子政务/OA系统的或者切磋技术的同志们可以联系我。
msn:
Gmail邀请:
------------------------------ItPub常客(有时间就来)!^_^
投票
交易
悬赏
活动
ITPUB论坛
≡ 数据库技术 ≡
> Oracle数据库管理
> Oracle开发
> Oracle Developer Suite
> Oracle入门与认证
> Oracle专题深入讨论
> Oracle新技术/11g
> Oracle电子文档
> Oracle Fusion中间件
> IBM数据库产品
> MS SQL Server
> Sybase管理与开发
> MySQL及其它开源数据库
> 内存数据库
> 数据仓库与数据挖掘
> 移动及嵌入式数据库
≡ 企业信息化 ≡
> ERP产品与实践
> CRM产品与实践
> HR产品与实践
> 物流
> 供应链
> 供应链建模与仿真
> 物流设备与系统工程
> 企业管理咨询
> 管理协同与办公自动化
> IT服务管理
> 数据中心建设
> ERP二次开发
> Oracle ERP
> Oracle EBS R12
> PeopleSoft与JDE
> EBS相关文档
> SAP R/3
> SAP Business One开发与快速实施
> SAP财务及CRM
> SAP后勤及HR
> mySAP ERP
> 系统开发及跨应用设置
> SAP相关文档
> 国外其它ERP产品
> 国内ERP产品
≡ 开发技术 ≡
> Java入门与认证版
> Java web开发及框架技术
> Java企业开发
> ASP.NET【已迁移到微软开发技术论坛】
> .Net企业开发与应用【已迁移到微软开发技术论坛】
> WEB程序开发
> WEB 2.0技术
> 动态语言
> 移动与游戏开发
≡ 系统设计与项目管理 ≡
> 系统分析与UML
> 系统分析与UML精华区
> 项目管理
> 项目过程
> 软件测试
> 算法讨论与研究
≡ IBM软件技术园地 ≡
> IBM数据库产品
> Lotus
> Tivoli
> Websphere
> Rational
> 与SOA相关的IBM产品与技术
> IBM软件技术精英协会
> 软件技术精英活动专版
≡ 操作系统与硬件 ≡
> AIX及IBM产品【已迁移到IXPUB】
> HP-UX及HP产品【已迁移到IXPUB】
> Solaris及SUN产品【已迁移到IXPUB】
> Linux及其应用 【已迁移到IXPUB】
> 其它UNIX系统【已迁移到IXPUB】
> windows系统及微软相关产品 【已迁移到IXPUB】
> 存储设备与容灾技术 【已迁移到IXPUB】
> 服务器 【已迁移到IXPUB】
≡ 行业纵向讨论区 ≡
> IT业界评论与展望
> 政府与教育事业
> 中国政府信息主管联盟
> 电信行业
> 金融行业
> 医卫行业
> 制造行业
> 电力行业
> 信息安全与审计
≡ 会员交流 ≡
> IT职业生涯
> 招聘求职商务信息
> 体育世界
> 体育博彩专版
> 旅游,驴友
> 汽车世界
> 外语角
> 数码摄影
> 你的故事我的歌
> 音乐推荐区
> 电子图书与IT文档资料
> 软件交流
> 软件交流精华区
≡ ITPUB产品与服务 ≡
> ITPUB地面活动专版
> BLOG天地
> WIKI世界
> 授权用户区
> 站务管理
≡ 微软开发技术 ≡
> 开发工具和语言
> .NET Framework 相关
> Visual Basic/VB.net
> Visual C#
> Visual C++/vc.net
> Visual Studio
> .NET软件架构与模式
> .NET开发辅助工具及框架
> Web开发
> ASP.NET与AJAX
> Web相关技术讨论(IIS等)
> Silverlight 技术
> 微软企业级产品技术
> SQL Server
> windows server
> SharePoint
> Exchange Server
> Biztalk
> 嵌入式及移动开发
> Windows Embedded 嵌入式技术
> Windows 移动设备
> Office开发
> Microsoft office system
> Office Business Application
> 微软产品用户交流区
> .Net电子书籍&&书籍介绍
> .Net人才交流
技术积分榜
社区积分榜
徽章
电子杂志
会员
团队
统计
邮箱
游乐场
帮助
TOP
CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号
联系我们
法律顾问
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计