DOM模型入门手册
创始人
2024-07-15 02:00:51
0

本文向大家描述一下DOM模型的概念,DOM是DocumentObjectModel的简称,自从W3C建立了DOM标准(W3CDOM)之后,以及DOM和浏览器兼容之后,DOM在实际应用中越来越广泛。

DOM模型概述

自从W3C建立了DOM标准(W3CDOM)之后,以及DOM和浏览器兼容之后,DOM在实际应用中越来越广泛。DOM是DocumentObjectModel的简称,中文名称为文档对象模型。它的主要作用是建立网页与Script或程序语言沟通的桥梁。

我们平时可操作及建立文件的属性、方法及事件都以并且用“对象”来展现(例如,document就代表“文件本身”这个对象,table对象则代表HTML的表格对象等等)。这些对象可以由当今大多数的浏览器以Script来取用。

DOM模型常用来和JavaScript交互,也就是说程序以JavaScript写成,但使用DOM来存取页面及其元素。它们两者之间的结合非常紧密,甚至可以说如果没有DOM,我们在使用javascript的时候是不可想象的,因为我们每解析一个节点一个元素都要耗费很多精力,DOM本身是设计为一种独立的程序语言,以一致的API存取文件的结构表述;当然除了JavaScript,DOM可还可以与任何程序语言共同运作,如C/C++、VB、VBS。

在和JavaScript进行交互的时候,DOM模型主要用来解析XML文档,当你的应用程序需要不断地导航、修改文档或随机地一次访问整个文档时,我们一般就使用DOM来解析。

在使用DOM进行解析的时候,它在内存中构建起一棵完整的解析树,借此实现对整个XML文档的全面、动态访问。也就是说,它的解析是有层次的,即将所有的html中的元素都解析成树上层次分明的节点,然后我们可以对这些节点进行增删改查等操作,这是对DOM模型的作用的最完善的总结。

和SAX不同,SAX是顺序解析的,与DOM相比,SAX解析器能提供更好的性能优势,它提供对XML文档内容的有效低级访问。
SAX模型***的优点是内存消耗小,因为整个文档无需一次加载到内存中,这使SAX解析器可以解析大于系统内存的文档。另外,你无需像在DOM中那样为所有节点创建对象。***,SAX“推”模型可用于广播环境,能够同时注册多个ContentHandler,并行接收事件,而不是在一个管道中一个接一个地进行处理。但是SAX的一些缺点使它的流行性不如DOM。

DOM模型的使用非常简单。你可以随机地访问XML文档,由于整个树都构建在内存中,因此可以通过DOMAPI修改这些节点,例如增加一个子节点或修改、删除一个节点。

不过,虽然内存树结构提供了很好的导航支持,但仍有一些解析策略问题需要仔细考虑。首先,整个XML文档必须一次解析完成,不可能只做部分解析;其次是效率问题,在内存中加载整个文档和构建完整树结构的成本很高,尤其当文档非常大的时候。典型地,DOM树的容量比文档容量要大一个数量级,所以它要消耗大量内存;第三,一般的DOM节点类型在互操作性上有优势,但对于对象类型绑定也许不是***的。
 

【编辑推荐】

  1. JavaScript DOM特性与应用详解
  2. HTML DOM入门级知识手册
  3. HTML DOM display属性语法实例解析
  4. 深入了解JavaScript HTML DOM对象
  5. 术语汇编 Javascript DOM技术探究

 

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...