已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章 使用DOM访问XML文档,7.1 DOM概述,7.1.1 DOM简介 DOM的中文含义为文档对象模型,由一组代表HTML文档或者XML文档中不同组成部分的程序对象组成,这些对象提供了各自的属性和方法,使得应用程序开发者能够通过编写脚本程序来操纵和显示文档中相应的组件。 使用DOM技术访问XML文档,具有强大的功能和灵活性,不仅可用来编写访问本地XML文档的程序,还可用来编写访问服务器端XML文档的应用程序。,可以把DOM看作是一种ActiveX对象,它绑定封装了若干个对XML文档进行访问的API,应用程序开发者能够使用脚本语言来调用DOM对象的属性与方法,达到访问、操作XML文档各个组成部分的目的。 DOM 以树状的层次节点来储存XML文档中的所有数据,可以使用DOM节点树来访问任何形式的XML文档,并且可以使用DOM提供的编程接口来显示和操纵XML文档中的任何组件,包括元素、属性、处理指令、注释及实体等。,7.1.2 DOM与SAX,除了DOM方式之外,XML技术还提供了SAX方式来读取和处理XML文档的数据。SAX的英文名称为Simple API for XML,即应用于XML的简单API。 DOM的运作方式是将整个文档读入内存,并根据文档中定义的元素及其属性构建一个树型结构用来描述该文档。DOM方式提供了直接指向XML文档各组成部分的API,给程序设计带来了方便。但是,由于DOM方式首先将整个文档载入内存,然后生成一颗相应的节点对象树,当XML文档的数据量比较大或文档结构比较复杂时,将要占据大量的内存空间,其解析过程也会需要比较长的时间。,SAX方式针对处理大型XML文档和高吞吐量的情况作了优化,它会遍历整个文档,并逐一访问文档中的每一项内容。SAX方式的优点是:无论XML文档有多大,都只将下一项内容载入内存中。因为忽略了为文档内容创建一颗对象树的过程,而能更快地执行。 与DOM方式相比,SAX方式对XML文档的处理缺乏一定的灵活性和规范性,并且SAX应用程序一般都比较长,所以本章将只介绍通过DOM方式对XML文档的访问与处理。,7.1.3 DOM结构树,当IE浏览器内含的XML解析器处理被载入的XML文档并根据文档的逻辑结构生成一棵对应的DOM树时,它会为XML文档中的每一个基本组件建立一个树中的对应节点。这些基本组件包括元素、属性、注释、实体与处理指令等,DOM会使用不同类型的节点来代表不同类型的XML组件。表7-1列出了DOM节点的各种类型及简短说明。,表7-1 DOM节点的各种类型,对于书中的CustomerDom.xml范例文档,将生成如下图所示的DOM结构树。,7.2 DOM对象架构,7.2.1 DOM对象概述 IE浏览器支持的XML DOM为应用程序操纵和处理XML文档提供了各种DOM对象,表7-2列出了各种XML DOM对象及其对应节点的简短说明。,表7-2 各种XML DOM对象,每一个不同的节点对象都有其特定的属性和方法,但也有许多共同的属性,表7-3列出了各种类型节点对象共有的一组属性。,表7-3 所有类型节点共有属性,除了共同具有的属性之外,各种类型的节点对象都提供了特有的属性和方法,来处理该节点类型所代表的特殊XML文档组件。 通过XML DOM对象的层次架构及其相关的属性,程序员可以从当前节点出发访问各个节点的信息。,7.2.2 Document对象,Document对象代表XML DOM树的根节点,同时代表了整个XML文档。该对象提供了对整个文档或文档中的数据进行访问和操作的许多属性和方法。 由于其他节点都是Document节点的子节点,所以通过Document对象可以访问文档中的各种节点,包括处理指令、注释、文档类型声明及根元素节点等。 表7-4列出了Document对象的一些特有属性。,表7-4 Document 对象的特有属性,表7-5列出了Document对象的常用方法及其说明。,表7-5 Document对象的常用方法,7.2.3 Node对象,在XML DOM树中,除了根节点之外,每一个节点都是一个Node对象。所以Node对象可以对应于XML文档中的任意一个元素、属性、处理指令或注释等。 Node对象所具有的属性与所有对象共有的属性基本相同,利用Node对象具有的一些方法则可操纵当前节点及其子节点。,表7-6 Node对象的常用方法,表7-6列出了Node对象的常用方法及其说明。,7.2.4 NodeList对象,NodeList对象是一系列相关节点的集合。例如,引用某个节点的childNodes 属性将返回一个包含该节点所有非属性子节点的NodeList对象。此外,调用某个节点对象的getNodeByName方法或者selectNodes方法,也可获得一个相应的NodeList对象。,表7-7则为NodeList 对象的方法及简要说明。,要从NodeList 集合对象中取得一个指定的子节点,可以调用NodeList 对象的item 方法,并给出想取得的子节点的索引值(注意:子节点的索引值由零开始)。 NodeList 对象只有一个名为length的属性,用来表示NodeList 集合中子节点的个数。,表7-7 NodeList 对象常用方法,7.2.5 ParseError对象,ParseError对象用来报告载入和解析XML文档时产生的错误。 ParseError对象没有提供有关的方法,而提供了多个属性来分别表示出错的代号、出错文档的URL、文档中出错的位置以及出错原因等信息。,表7-8列出了ParseError对象的各种属性及简短说明。,表7-8 ParseError 对象常用属性,7.3 DOM客户端编程访问XML,7.3.1 在客户端编程中建立DOM 在客户端利用DOM对象编程来访问本地XML文档,最简单的方法就是将XML文档载入并绑定到某个HTML文档,在该HTML文档中建立一个数据源对象DSO。此后,通过由ID属性指定的标识符便可引用这个DSO。并可以进一步使用DSO的对象成员XMLDocument来访问DOM。,在HTML网页中建立XML DOM对象的常用方式是,首先创建一个MSXML所支持的DOMDocument对象实例,然后再调用其load方法载入指定的XML文档,建立起DOM结构树与XML文档之间的关联。,7.3.2 显示单记录XML文档数据,书中的DomDemo_01.htm文档,就是一个利用DOM对象编写简单脚本代码的HTML文档。在IE浏览器中运行这个网页文档,即可将范例文档Customer_single.xml中每个子元素的内容显示出来,如下图所示。,7.3.3 显示多记录XML文档数据,书中的DomDemo_02.htm文档,就是一个利用DOM对象编写脚本程序来显示Customer.xml 中所有的记录数据的HTML文档。在该文档的脚本程序设计中利用了一种与XML文档中所包含元素数量无关的方法,因而可以显示所有的记录数据。,7.3.4 查询指定的XML元素数据,书中的DomDemo_03.htm文档,就是一个利用Document对象的getElementsByTagName 方法,在Customer.xml文档中查询所有符合指定名称元素的例子。将此网页文档在IE浏览器中打开,在文本框中输入要查询的元素名称“联系人”后再按下“查询”按钮,即可显示出查询结果。,7.3.5 访问XML文档的属性值,利用DOM编程的方式,同样可以实现访问XML文档中的属性。对于那些含有属性的XML元素只能使用该元素节点的attributes属性来访问其Attribute子节点。 书中的DomDemo_04.htm文档,就是用来显示范例文档Customer_Att.xml中每个“客户”元素含有的所有子元素的数据,同时显示出每个“联系人”子元素含有的两个属性(包括属性名称和属性值)。,7.3.6 测试XML文档的有效性,书中的ValidityTest.htm文档,就是一个可用来检验任何XML文档有效性的脚本程序范例网页文档,这个网页会载入一个指定的XML文档,并使用DOMParseError对象所提供的属性来检测和报告载入XML文档时所发生的错误。 假设指定的XML文档是有效的、不存在格式错误运行上述检测程序网页后,将弹出“载入的XML文档是有效的!”的消息框。如果被检测的XML文档确实存在错误,就会弹出消息框,同时在其中详细地列出各项错误说明信息。,7.4 DOM服务器端编程访问XML,7.4.1 ASP编程环境与DOM 1建立ASP的运行环境 ASP是一种在服务器端运行的脚本程序,所以在开发和测试ASP网络应用程序之前,必须建立可供ASP程序运行的Web服务器工作环境。,因为ASP是Microsoft公司推出的,只有在Windows操作系统及其配套的Web服务器软件IIS支持下才能运行。 在成功安装IIS软件之后,再做一些简单的设置,就可以将自己的机器设定成一台虚拟的Web服务器。,2在ASP编程中创建XML DOM,使用JavaScript创建XML DOM对象实例,应使用如下代码之一: var xmldoc = Server.CreateObject(“MSXML.DOMDocument“); var xmldoc = Server.CreateObject(“Microsoft.XMLDOM“);,使用VBScript创建XML DOM对象实例,应使用如下代码之一: set xmldoc = Server.CreateObject(“MSXML.DOMDocument“) set xmldoc = Server.CreateObject(“Microsoft.XMLDOM“) 此外,加载XML文档时需要使用ASP提供的Server对象的MapPath方法将相对路径映射为网络路径。,7.4.2 ASP编程创建XML文档,可以利用DOM对象进行ASP编程来创建XML文档。具体步骤为: 1.调用Server对象的CreateObject方法创建一个Document对象实例。 2.调用Document对象的loadXML方法,将字符串形式的XML声明语句和文档根元素节点存入内存缓冲区中的DOM树。 3.在根元素下创建各个子元素节点。 4.为元素添加属性。 5.当所有的元素创建完毕后,调用Document对象实例的Save方法将内存中的DOM树内容存入指定的XML文档。,7.4.3 ASP编程遍历XML文档,书中的ASP程序范例DomTraverse1.asp,是通过遍历DOM树的节点来访问和显示服务器端XML文档Customer.xml的所有元素数据。 该范例程序首先创建一个XML DOM对象实例,然后载入指定的Customer.xml文档。此后主要是通过创建一个递归函数traverse() 来实现遍历所有的DOM节点。函数代码中使用了当前节点的childNodes属性来获得一个NodeLists集合对象,并通过循环语句来逐个显示该集合中各个节点的文本内容。,7.4.4 ASP编程添加XML数据,利用DOM技术结合ASP编程可以为服务器端的XML文档添加新的元素,这是通过为该文档的 DOM树添加相应的节点来实现的。 书中的DomAppend.htm文档是用来添加新客户数据的表单网页,用户在该网页表单提供的文本框中输入完数据后,单击“提交”按钮,将激活一个名为DomAppend.asp的脚本程序,该程序负责接收在表单中输入的各项数据、创建XML DOM对象实例并载入指定的Customer.xml文档、新建若干子节点、给新节点赋值等,并最终生成添加数据后的XML文档。,7.4.5 ASP编程修改XML数据,利用DOM与ASP编程的方式还可以实现对XML文档中的指定数据进行修改和更新。书中的范例程序DomModify1.asp就是在Customer.xml客户数据文档中,将“红阳商贸
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年房屋交易合同模板大全
- 2024年技术交易合同登记
- 2024年新修订版回迁房买卖合同样本
- 2024年教室借用协议
- 2024年市场调研与分析报告订购协议
- 2024年戊方提供环保解决方案合同
- 2024年技术研发合同标的、研发内容与技术成果分配
- 2024年建筑幕墙及光伏系统安装合同
- DB4117T 242-2019 小麦全程机械化作业质量标准
- DB4117T 169.28-2023 动物疫病流行病学调查技术规范 第28部分:牛羊日本血吸虫病
- 骨髓腔内输液(IOI)技术
- 建筑幕墙工程(铝板、玻璃、石材)监理实施细则(全面版)
- 小学数学与思政融合课教学设计
- 体育公园运营管理方案
- 休闲生态农业观光园建设项目财务分析及效益评价
- 江西省南昌市民德学校2023-2024学年八年级上学期期中数学试题
- 国际金融(英文版)智慧树知到期末考试答案2024年
- 2024年《药物临床试验质量管理规范》(GCP)网络培训题库
- 辽宁省名校联盟2024届高三下学期3月份联合考试化学
- 2023年度学校食堂每月食品安全调度会议纪要
- 建筑门窗、幕墙安装工人安全技术操作规程
评论
0/150
提交评论