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