【VB开源代码栏目提醒】:以下是网学会员为您推荐的VB开源代码-XML应用程序接口探讨 - 期刊论文,希望本篇文章对您学习有所帮助。
2004年第11期 福建电脑 XML应用程序接口探讨 魏宏安 (福州大学靳理与电信_v-,ll学虎福建福州3SXm) 【摘要】随着网络技术曲发展,舭时代正在来临。
由于XML能使文件教据对泉化,数据变得无处不在。
如 何曼灵活曼充分的获取数据,已经成为XML研究的重点。
DOM分析嚣的树结构的思想与Ⅺ,皿文档的结构相吻 合,它所采用的随机访问机制极为方便。
丰文舟绍了DOM分析器的原理及组成,并介绍了其应用方法。
最后,还 和SAX分析嚣作7比较。
. 【关键词l XML DOM树结构随机访问SAX 一、引言 众所周知,虽然Internet的发展不过十年,但它对我们工作、
学习、生活的方方面面却产生了深远的影响。
在这个
网络 一棵对象节点树。
在这棵节点树中,有一个根节点…Docu 不臂这个文档有多简单或者多复杂。
其中的信息都会被转化成 ment节点,所有其他的节点都是根节点的后代节点。
节点树生大潮之下,XML(eXtemible Markup Language),这一以第二代网 成之后,就可以通过DOM接口访问、修改、添加、删除、创建树页发布语言而著称的新标准,凭借着它的勃勃生机与强大优 中的节点和内容。
势,为网络应用注入了新的活力。
XML是一种置标语肓,它不 以一个简单的客户联系信息的例子来说明,下面是一个仅允许你定义自己的一套标记,而且这些标记不必仅限于对于 XML文档片段:显示格式的描述。
它能方便的使文件数据对象化。
使数据库应 (?掰_靶∞h=。
1.o_曲。
蛳=。
#231r?> <“r目女∞k>用扩展到网页中。
如何去创建、访问和操作一个XML文件及 <pertoa№=。
male”>其中的对象,如何读懂别人写的XML文件,从中提取我们所需要的信息,成了XML研究的重点。
<一>张三(/harm> <etmil>蛳:o,“/emsil> 实际上。
XML文档就是一个文本文件,因此在我们需要访 </lues即n>问文档中的内容时.必须首先书写一个能够识别XlvlL文档信 <m九“=。
female”>息的文本文件阋读器(通常称XML语法分析器),由它来帮助 <r-叩x>李四(^一> <∞mn>l毋蹦.net</emeil>我们解释XML文档并提取其中的内容。
糟糕的是.如果需要 </pet.Jon>在不同的应用程序或开发环境中访问XIVIL文档中的数据。
就 </addreaalxdc>要多次重写分析器
代码。
即使把XML分析器做成一个DLL- 用DOM树来表示这段文档,如图所示:如果每个DLL的接口都不相同,那么我们的开发就必然是针对某一个XML分析器的。
要是想换用另外一个分析器,程序还是得重新改写。
因此,我们需要一个统一的而且友好的接口.使我们可以以它为中介,将我们的应用程序与XML文档结合在一起。
二、DOM 文档对象模型DOM(Docttment Object M】0dd)是W3C的标准接口规范。
在应用程序中.基于DOM的XML分析器将一个XIvlL文档转换成—个对象模型的集合(通常称DOM树),应用程序可以通过对DOM树的操作,来实现对XML文档数据的操作。
通过DOM接口,应用
程序可以在任何时候访问XML文档中的任何一部分数据,这种机制被称作随机访问机制。
在这棵文档对象树中,文档中所有的内容都是用节点来表 1、DOM的组成 示的。
一个节点又可以包古其他节点。
节点本身还可能包含一 对于)0沮埘f用开发来说.IX)M就是一个对象化的xML 些信息,例如节点的名字、节点值、节点类型等。
文档中的所有数据接口。
—个与语言无关、与平台无关的标准接口规范。
它 其他元素都是根元素的后代元素。
根元素是唯一的,具有其他定义了HTML文档和Ⅻ也文档的逻辑结构,给出了一种访J可 元素所不具有的某些特征。
和处理HTML文档和XML文档的方法。
利用DOM.程序开发 事实上,DOM中还包含注释、处理指夸、文档类型、实体、人员可以动态地创建文档.遍历文档结构。
褥加、修改、删除文 实体引用、命名空间、事件、样式单等多种对象模型。
文档对象档内容,改变
文档的显示方式等等。
模型利用对象来把
文档模型化,这些模型不仅描述了文档的结 目前.DOM由三部分组成,包括:核心(core)、HTML和 构,还定义了模型中对象的行为。
换句话说,DOM树中的节点XMI.o核心部分是结构化文档比较底层对象的集合,这一部分 不仅仅可以是数据结构.而且可以是对象,其中可以包吉方长所定义的对象已经完全可以表达出任何HTML和XML文档 和属性。
中的数据了。
HTML接口和XML接口两部分则是专为操作具 3、DOM的四十基本接口体的HTML文档和XML文档所提供的高级接口,使对这两类 在DOM接口规范中,有四个基本的接口:Node,Docurnent。
文件舶操作更加方便。
NodeList以及N越r划卜4口d舒bpo Node接口是其他大多数接口 2、DOM树 的父类,象&nⅡtnt,Elerneat,Attribute,Text,CotmⅢtt等接口 DOM树是一种分层对象模型,这个模型依据XML的文档 都是从Node接ra继承过来的。
nl。
de接口提供了访问DOM树结构形成了一棵节点树。
由于XML本质上就是一种分层结 中元素内容与信息的途径。
并给出了对DOM树中的元素进行构.所以这种描述方法是十分自然的。
遍历的支持。
基于DOM的XML分析器在对)函儿文档进行分析之后. Dooxnmt接口是对文档进行操作的人口,它是从Node接 福建电脑 2004年第11期口继承过来的。
I〕ocument接口提供了创建其他节点对象的方 (O)来表示。
法,通过该方法创建的节点对象都有一个ownerDocument属性, 对于DOM树中的属性节点,访问方法略有不同,可以通过用来表明当前节点是由谁所创建的以及节点同Doctanent之问 下面的语句来实现:的联系。
n=node.atmbum.#“-∞al目n(。
·i’) “td≥∞蚍。
attr mdeValue Nodd血接口是—个节点的集合.它包音了某个节点中的 上述访问语句执行后,attaC_.onUmt的值是“t日nale”。
所有子节点。
它提供了对节点集合的抽象定义,但并不包含如 4、添加元素何实现这个节点集的定义。
在DOM中.NodeList的对象是” 例如我们希望在addressbook.xml中,给第一个persotl元素h谐的.也就是说,对文档的改变,会直接反映到相关的NodeLi搴t对象中.而不需DOM应用程序再做其他额外的操作。
增添—个字符串为”甲公司”的ocrapany元素,实现这一添加元 素操作的语句如下: NamedNodeMap接口也是一个节点的集合,通过该接rl,可 node=嘣.d浊矾。
妇.ira.(0)以建立节点名和节点(主要是属性节点)之间的一一映射关系。
newNode。
rayDoe,mmt.a捌“EkY-jnf_oamo唧’)从而利用节点名可以直接访问特定的节点。
与NodeList相同, node b*nB—ofd雎耐‘豳.node.1ast№)在IX)M中.NamedNodeMap对象也是“live”的。
地m岫=rmlkmmt∞tTextNcde(。
甲蛩司。
) 三、DOM的应用 node.出心Ⅻ∞.hn(1).∞口mKH(∞n岫) 5、删除元素 l、创建DooEmat对象 通过创建Doctanent对象,应用程序或者脚本就可得到对 现在,我们再把前一小节添加的元素删除.可通过下面的
代码实现这一目的: ddNodt=I如四kl(node.ehil皿妯.itan(!))XML文档进行操作的人口。
下面给出了使用VB创建Docu- node。
mot.ch/MNodes;饵“O)meat对象的范例。
IXmd∞^5a知ctSn doe=o置Ma抽:t(‘Mb∞。
也Ⅺ咀卫0盯’) 其中.ddNode中存放的是巳被删除的节点。
在删除某十 或者 节点时.以该节点为根的子树将整个被删除,因此得到的结果 Ixmdoe^^DOMDoetmlemSH doe。
NEⅣDaMD∞qmm DOM树恢复原状。
2、加戢XML文档 6、修改元素 在W3C的DOM接口规范中,没有定义DOM中的接口对 元素内容的改变包括元素名称、元素属性、元素所包含的象同实际文档相关联的方法。
因此,不同的XML分析器所提 文本内容等项目的改变。
例如想把张三的电子邮件地址更改供的加载XML文档的方法也不尽相同。
在微软的msxrnl中. 为≈@abc.gov,可通过下列语句实现:提供了—个load方法来加载XIvlL文档.建立DOM树同XIvlL node 2 K嚏ehlklNodm irma0) ∞哪小bIk=node cKIdNod矗imp(0)文档之间的关联。
以客户联系信息的XML文档为例,可通过下述方式来加 mmi№de.dI柏Nohitem(0).姻deV如=五@血.g时 四、与SAX比较载文档: 与DOM不同,SAX提供的访问模式是一种顺序模式,这是 lllyl栅t B≈唧‘hb町嘲b哪Ymt.10ad(。
d觚.,∞d。
) Dh州_D帕助哺tsn竭D∞曲叫=o删“djecI(。
耐∞∞击.mldom’) 一种快速读写XML数据的方式。
当使用SAX分析器对XML 文档进行分析时,会触发一系列事件。
并激活相应的事件处理XML文档被加载后,在内存中形成DOM树。
3、遍历)口叽文档 函数,应用程序通过这些事件处理函数实现对XML文档的访 我们依旧以客户联系信息为例,通过几个实例来说明如何 问,因而sA)(接口也被称作事件驱动接口。
遍历DOM树中的节点。
由于SAX分析器的事件触发本身是有时序性的,因此, 首先,我们要获取XML文档的根元素节点。
操作如下: SAX提供的是一种顺序访问机制,对于已经分析过的部分.不 2∞—kd-n眦.d∞口n日nEkmd” root 能再倒回去重新处理。
SAX之所以被叫做”简单”应用程序接 在得到了文档的根元素节点之后,例如,对文档中的第二 口。
是因为SAX分析器只做了一些简单的
工作,大部分工作还个persotl元素节点以及其子节点的访问可以通过下面的方式 要由应用程序自已去做。
因此.同DOM分析器相比,SAX分析来实现: 器虽然简单但缺乏灵活性。
钟燃时蛐=,∞t-dl帕^b蛔}饵“1) 五、结束语 n_r-No如。
p口舶d如dB出I出qod皓.its(0) IX)M最大的缺点在于对内存的需求就比较高;而且对于 n宣tNode=n∞_d岫chlklNod曙/am(0) thdam。
m耐qode.nodeValae 结构复杂的树的遍历比较耗时。
但这个
问题随着现代微电子 上述访问语句执行后。
theNatrm的值是“李四”。
技术的发展,
计算机运算速度不断提升,也慢慢淡化。
同时,由 这儿有一点需要注意,因为item中的索引参数是从0开始 于DOM分析器所采用的树结构的思想与xML文档的结构相的。
如果我们要访问节点集合中的第一个节点,则应该用item 吻合,鉴于随机访问给应用程序的开发带来的灵活性,因此, DOM分析器得到了很广泛的使用。
参考文献【1】XML高照壕枉.机械工业出艟社.(羹)M&^Birbeck等著【2】XML与ASP丹站妾作太仝.中国娃道出版社,陈姊辉菁【3】XML一百制作翱赢研充,中田扶进出版社。
陈套安14〕)0儿轻格进阶。
电干工业出版社.(芙)Natmya Pi他【5】XML宝鼻.电子工业出∞啡.(羹)Elliot塘Rusty陆jdd