XML实用教程 北京大学出版社 丁跃潮 张涛 叶文来 刘韵华 程旭曼 丁潇 张天桥 2019/1/16
9 XML文档对象模型 理解文档对象模型的概念 熟悉文档对象模型的基本知识 掌握客户端加载XML的方法 掌握服务器端加载XML的方法 学会用DOM编制ASP程序 2019/1/16
9.1 DOM基础知识 9.1.1 DOM的概念和组成 DOM全称Document Object Model,是一个文件对象所组成的模型 DOM由三部分组成,包括:核心(core)、HTML和XML XML DOM包含四个主要对象: XML DOM Document XML DOM Node XML DOM NodeList XML DOM NamedNodeMap 2019/1/16
一个XML分析器,在对XML文档进行分析之后,不管这个文档简单或复杂,其中的信息都会被转化成一棵对象节点树。 9.1.2 DOM 结构模型 DOM对象映射了XML文档的树型结构 一个XML分析器,在对XML文档进行分析之后,不管这个文档简单或复杂,其中的信息都会被转化成一棵对象节点树。 title Documentment books book bookinfo Recomen- dation resume chapter capter author publish price para publisher ISBN pubdate ID bookcategory amount remain 2019/1/16
9.1.3创建Document对象 首先,我们来创建Document对象 对于JavaScript: 对于VBScript: var xmlDom = new ActiveXObject("MSXML2.DOMDocument.4.0") 对于VBScript: set xmlDom = CreateObject("MSXML2.DOMDocument.4.0") 2019/1/16
对于VB: 或者 Dim xmlDom As ObjectSet xmlDom = CreateObject("MSXML2.DOMDocument.4.0") 或者 Dim xmlDom As DOMDocument Set xmlDom = New DOMDocument 对于ASP(VBScript): set xmlDom = Server.CreateObject("MSXML2.DOMDocument.4.0") 2019/1/16
9.2 客户端加载XML 9.2.1加载外部XML文件 VBScript可通过下述方式来加载文档 Dim xmlDom Set xmlDom = CreateObject("MSXML2.DOMDocument.4.0") ' 设置xmlDom的async为false,即异步为假,保证XML解析器暂停执行,直到XML文件加载完成 xmlDom.async = False ' 加载XML文件 xmlDom.load("code9_1.xml") 2019/1/16
与之对应的JavaScript加载外部XML文件的代码如下: // 建立XML DOM对象 var xmlDom = new ActiveXObject("MSXML2.DOMDocument.4.0") xmlDom.async = "false" // 加载XML文件的字符串 xmlDom.load("code9_1.xml") 2019/1/16
加载XML字符串的脚本语言与加载外部XML文件类似 “xmlDom.load("code9_1.xml")”一句改为“xmlDom.loadXML(xmlStr) ” 2019/1/16
9.2.3加载XML文件及其转换文件 用XML Dom的transformNode方法实现转换,转换的结果可以通过支持DSO的HTML元素的“innerHTML”属性将XML文档节点信息的正确地显示 2019/1/16
9.3 服务器端加载XML 在服务器上创建了DOM对象之后,既可以自己构造新的XML文档,也可以装载一个现有的文档 在装载XML文档之前,应该把DOM对象的async属性设置成false,这是告诉DOM对象装载XML文档不是异步进行 2019/1/16
可以用getElementsByTagName方法从文档获得元素(或节点) 9.3.1服务器端加载XML文件并显示所有元素 DOM提供许多精确分析文档内容的方法 可以用getElementsByTagName方法从文档获得元素(或节点) 2019/1/16
9.3.2服务器端加载XML文件及其转换文件并显示所有元素 利用ASP文件也可以在服务器端加载XML文件及其转换文件 实现在服务器端的处理和向客户端的显示。 Response.Write(xmlDom.transformNode(xslDom)) 2019/1/16
9.4 ParseError对象 如果XML文档有错误,XML Parser将产生错误代码,并保存在parseError对象中 包括错误代码、错误文本和错误行号等信息 9.4.1 ParseError属性 parseError对象提供了有关错误的丰富而宝贵的信息 <% If xmlDom.parseError.errorCode <> 0 Then 处理错误语句 End If %> 2019/1/16
var xmlDom = new ActiveXObject("MSXML2.DOMDocument.4.0") 9.4.2出现错误时的处理 var xmlDom = new ActiveXObject("MSXML2.DOMDocument.4.0") xmlDom.async="false" xmlDom.load("notexist_or_err.xml") If xmlDom.parseError.errorCode <> 0 Then document.write("<br>错误代码: ") document.write(xmlDom.parseError.errorCode) document.write("<br>错误原因: ") document.write(xmlDom.parseError.reason) document.write("<br>错误行号: ") document.write(xmlDom.parseError.line) end if 2019/1/16
9.5 DOM的节点接口 节点接口程序通常用来读和写XML节点树中的个别元素 9.5.1新增XML节点 按下列步骤进行 1.建立新节点 XML DOM对象创建元素的方法为CreateElement 2将节点插入到位 要用AppendChild 方法 2019/1/16
3给元素赋值 4添加元素属性 newNode.text=”罗贯中” 使用Element对象中的setAttribute方法,也可以先用Document对象中的createAttribute方法设置属性值,然后使用Element对象中的setAttributeNode方法把新节点添加到DOM树中 2019/1/16
执行对象节点所属父节点的removeChild方法 9.5.2删除XML元素和属性 执行对象节点所属父节点的removeChild方法 Set objDeleteNode=xmlDom.documentElement.firstchild objRoot.removeChild(objDeleteNode) 用getElementsByTagName方法,找出要删除的节点名称进行删除 删除属性最直接的方法是调用Element中的removeAttribute方法 2019/1/16
另外一种方案是先用getAttributeNode方法对操作对象进行定位,然后执行removeAttributeNode操作 2019/1/16
9.5.3 访问和修改XML DOM节点 1访问和修改XML DOM元素 2访问和修改XML DOM属性 执行对象节点所属父节点的replaceChild方法即可 2访问和修改XML DOM属性 通过getAttribute和setAttribute方法读取属性值或修改属性值, 用getAttributeNode方法直接返回Attribute对象 用removeAttribute方法删除某个属性后,采用setAttribute方法设置新的属性,也能很方便地修改原来的属性 2019/1/16
小结 XML DOM包含四个主要对象:XML DOM Document, XML DOM Node,XML DOM NodeList和XML DOM NamedNodeMap。 XML DOM Document对象代表XML DOM层次中的顶层节点,它是建立和操纵XML结构的基础。 只要对XML文档的结构有一个基本了解,再利用DOM的强大功能,我们就可以方便地在ASP应用服务器端解析XML文档,从解析结果中选择合适的内容发送给客户端。 2019/1/16
谢谢 2019/1/16