关于xml与dom的一些概念

一:关于XML

         21世纪无疑是web的时代。……标记语言特别是html的出现改变了计算机的发展方向,以文档对象为基础、以浏览器为载体,内容更丰富且更具实时性的图形界面取代了单调的命令行界面。然而,html本身却存在着很多缺陷。首先,html是一种样式语言,它目前在internet中扮演的只是数据表示的角色,随着信息量的增多,html变得越来越难以胜任;其次,html对浏览器的过度依赖性也形成了html标准的严重不统一,从而导致许多信息表示只能由某种特定的浏览器来解释。这些不足使人们开始研究一门新的标记语言来弥补html的缺陷,xml的产生就正是这种思考的最终结果。

xml是一种专门为internet所设计的标记语言,它的重点是管理数据本身,数据的表示形式交给其它技术来解决。这种明确的分工带来了更高效的程序设计、更快速的搜索引擎、更统一的数据表示方式以及更方便的数据交流。
xml是一种定义语言的语言,它克服了html的缺点,给了程序员更自由的空间。近几年,xml在除数据表示以外的其他方面也得到越来越广泛的应用,从数据存储到数据交换再到系统整合,xml都发挥着强大的作用。基于xml的新技术如雨后春笋层出不穷,web服务、ajax等技术相继形成并逐渐开始发展成熟。
……xml不仅需要dtd,还应当考虑它与应用程序之间的交互接口。在xml中用于完成这个任务的有两个API,一个是SAX(Simple API for XML,XML简单API);另一个是DOM。与SAX只针对XML进行处理不同,DOM是用于处理HTML和XML文档的一系列的对象和接口。严格而言,DOM并不是一个API,因为DOM只提供了接口的定义,并没有接口的实现,所以仅是一个规范。
====================================
 
二:什么是DOM
简单的说,DOM是一组独立于语言和平台的应用程序编程接口,它能够描述如何访问和操纵存储在结构化XML和HTML文档中的信息。它定义了构成DOM的不同对象,却没有提供特定的实现。实际上,它能够用任何编程语言实现。利用DOM中的对象,开发人员可以对文档进行读取、搜索、修改、添加和删除等操作。DOM为文档导航以及操作HTML和XML文档的内容和结构提供了标准函数。
 
三:DOM的工作方式
DOM的工作方式是:首先将XML文档一次性的装入内存,然后对文档进行解析,根据文档中定义的元素、属性、注释和处理指令等不同的内容进行分解,以“结点数”的形式在内存中创建XML文件的表示,也就是一个文档对象模型。这里的含义其实是把文档对象化,文档中每个结点对应着模型中一个对象,然后根据对象提供的编程接口,在Application中访问XML文档进而操作XML文档。
 
四:正确理解DOM
1)DOM不是一种二进制的规范。用同一种语言编写的DOM程序在跨平台的时候是源码兼容的,但DOM没有定义任何形式的二进制互操作功能。
2)DOM并没有描述如何把对象保存到XML或者HTML中。它没有说明对象如何表示成XML,而是说明了xml或html文档如何被表示成对象。所以,DOM可用于面向对象的编程。
3)DOM不是一套数据结构集,它是说明接口的一个对象模型。虽然文档包含显示父子关系的图表,但这些逻辑联系是由程序接口定义的,而不是由任何特定内部数据表示结构的。
4)DOM没有定义文档中信息的相关性以及文档中信息是如何组织的。对于XML,则由W3C的XML信息集进行说明,DOM只是针对信息集的简单API。
 
五:什么是DOM API
编写通过DOM访问XML文件的应用程序时,必须使用特定的DOM实现。实现是某种形式的类库,它设计为运行在特定的硬件和软件平台上,并访问特定的数据存储(例如文本文件,关系数据库等)。
API 实际上是一组类库,一个组件利用它指示另一个组件执行更底层的服务。W3C DOM仅仅提供了DOM类库的接口定义,而没有提供特定的实现。为程序员提供DOM 实现的任务要由第三方完成。当用户打算使用DOM操作应用程序中的XML结构时,对于应用程序的每个目标平台,都要获取相应平台的DOM实现。在大多数情况下,这些类库要与应用程序绑定,并与应用程序的二进制代码一起分发。
按照DOM的工作方式,为了使应用程序可以访问XML文档,首先必须对读取到内存的XML文档进行解析。通过对文档中所包含的信息进行有效性检验(如果文档使用了DTD时)以及扩展在文档中所使用的所有实体,解析器就可以对文档进行处理。然后,通过XML解析器,被处理的XML文档在内存中被转化为XML文档对象。这个文档对象包括一个带结点的树,树的结点中包含了XML文档中的数据和结构信息。这个时候,应用软件就可以使用DOM API 访问和修改树的结点。
DOM的API 不包含实现,它仅仅允许应用程序通过它访问XML文档中的数据。解析器有责任为接口提供相关的实现类,同时也需要提供一种方法来初始化这些类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值