您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > JavaScript操作XML
JavaScript操作XML1示例:载入XML文件并实现查询或修改•XML目前最多的一种应用就是作为数据的载体,成为互联网上应用最广泛的轻量级数据交换方式之一。代码.htm是一个使用JavaScript载入XML文件,并实现查询或修改的例子。•代码.htm使用JavaScript载入XML文件•html•head•metahttp-equiv=content-typecontent=text/html;charset=GB2312/•title使用JavaScript载入XML文件/title•style•*{font-size:12px;font-family:宋体,Arial;}/*规定了所有的字体样式*/•body{overflow:auto;}a{color:blue;}•li{line-height:20px;}•table{border-collapse:collapse;}•td{padding:5px10px;border:1pxsolid#333;}•#data_count{text-decoration:underline;color:blue;}•/style•script•varxml,data_ready,xml_file_path;2XML•XML是可扩展的标记语言的缩写,即“eXtensibleMarkupLanguage”。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。2.1XML简介•XML是一种标记语言,因此要理解XML,首先要理解什么是标记。在对HTML的学习过程中,已经反复接触到了标记这个概念。通俗地讲,标记就是一种用来给文本内容增加附加信息的手段。在HTML里,每一个标记都是有着确切含义的。例如,在HTML中,标签“I”的含义是要求HTML浏览器将一段文本以斜体的样式显示,而标签“A”的含义是告诉浏览器生成一个超链接或锚点。•XML与HTML的不同之处在于,其并不会提供了一组事先已经定义好了的标签,而仅仅提供了一个标准语言书写的规则和标准,依照这个标准,任何XML书写者都可以根据实际需要,定义自己的新的标记语言,并为这个标记语言规定其特有的一套标签。因此,XML是一种源标记语言,允许根据其所提供的规则,制定各种各样的标记语言。•XML来源自SGML和HTML,这两个语言都是非常成功的标记语言。SGML的全称是“标准通用化标记语言”,从80年代初开始使用。类似于XML,SGML也可用于创建标记语言,其为语法标记提供了异常强大的工具,同时也有极好的扩展性,因此在分类和索引数据中非常有用。目前SGML多用于科技文献和政府办公文件中。但是SGML也有着很多缺点。一是其非常之复杂,对于网络上的日常应用来说其复杂程度简直不可思议,此外SGML非常昂贵。HTML免费、简单,而且获得了广泛的支持,是一个非常简单的SGML语言,可以方便普通人的使用。1996年人们开始致力于描述一个标记语言,使其既具有SGML的强大功能和可扩展性,同时又具有HTML的简单性。W3C于1998年2月批准了XML的1.0版本。2.2XML文档的结构•一个“正确书写”的HTML文档实际上就可以直接被当作一个XML文档。确实,作为脱胎自HTML的标记语言,XML和HTML有着非常多的相似之处。例如,其注释都是由“!--”和“--”包括起来的内容,注释都不允许嵌套。•因此在对XML文档结构做初步的讲解之前,请读者首先牢牢记住以下XML不同于,或者说严格于HTML语言的地方(这些地方也是初学者常常犯错的地方):•(1)XML文档有且仅有一个根元素。•(2)XML文档是大小写敏感的。•(3)XML文档的元素必须正确嵌套,标记之间不可以交叉。•(4)XML元素必须要有结束标记。•(5)在XML中,在属性值周围省略引号是非法的,并且同一个元素标记中的属性名不可以重复。•(6)XML文档中的连续多个空格不会被忽略。•(7)XML声明必须放在文档的最前部。2.3在Web页面中使用XML•在前面章节中,介绍数据绑定的时候,曾经提到过在HTML页面中使用XML数据岛(需要“InternetExplorer5.0”及以上版本的浏览器),其使用的方法有两种:•!--直接将XML数据书写在HTML页面中--•xmlid=”x1”•图书•名称鹿鼎记/名称•作者金庸/作者•/图书•/xml•!--引用外部的XML数据--•xmlid=”x2”src=”outer.xml”3XML控件的文档对象•在Web页面中,对于脚本来说,XML控件中的对象模型结构存在三种类型元素:XML文档对象、XML元素节点对象和XML元素节点集。3.1XML文档对象的属性和方法•使用“newActiveXObject(“Microsoft.XMLDOM”)”方法获得的就是一个XML文档对象。XML文档对象类似于HTML页面的DOM结构中的“document”对象。•注意:这里说的类似仅仅是属性名和方法名上的相似,XML文档对象首先还是一个“ActiveX”对象,而不是HTML文档的DOM对象.xmlDocument对象的属性•属性•描述••ChildNodes•此属性是一个节点的集合,用来获取节点的所有子节点••DocumentElement•获取文档XML文档的节点••HasChildNodes•获取一个值,该值指示节点是否有任何子节点••InnerText•获取或设置节点及其所有子节点的所有文本内容的串联值••InnerXml•获取或设置表示当前节点子级的XML标记••Value•获取或设置节点的值••方法•描述••AppendChild•将指定的节点添加到该节点的子节点列表的末尾••CreateElement•创建一个XML元素••CreateNode•创建一个节点••GetElementsByTagName•返回一个XmlNodeList,它包含与指定•名称匹配的所有子代元素的列表••GetEnumerator•提供对XmlNode中节点上ForEach样式迭代的支持••InsertAfter•将指定的节点紧接着插入指定的引用节点之后••InsertBefore•将指定的节点紧接着插入指定的引用节点之前••RemoveChild•删除某个子节点••Save•将Dom对象保存为XML文件••Load•装载指定的XML文档•3.2使用XML文档对象对XML进行校验•代码2.htm是一个用于校验XML有效性的程序。其作用是确认输入的XML字符串符合其DTD或Schemas定义。•在页面载入时,程序使用“newActiveXObject(“Microsoft.XMLDOM”)”方法建立一个新的XML控件。在鼠标单击“验证”按钮时,此程序调用XMLDocument对象的“loadXML”方法,将多行文本框的内容作为XML文本载入。然后调用XMLDocument对象的“Validate”方法,对载入的XML文本进行验证。此方法返回一个“error”对象。通过对“error”对象的判断,来确定载入的XML文档的有效性。•XML控件中的“error”对象记录了最后一次发生的错误的相关信息。其具有属性“errorCode”和“reason”。“errorCode”记录了错误的代码,无错误时此属性返回值为“0”。“reason”属性记录了错误的原因描述。•如果提供给“loadXML”的字符串参数符合XML文档的书写要求(有且仅有一个根节点、标签匹配且正确嵌套等),即可以被正确载入。如果载入的XML文本片段中不包含DTD或Schemas内容,则调用XMLDocument对象的“Validate”方法时则会产生错误。但是这种错误并不会影响对XMLDom对象的操作。3.3异步载入远程XML文件•使用XMLDocument对象的“load”方法,可以提供多种协议,例如“file:”或“http:”。但是对于“WindowsXPSP2”等版本的操作系统来说,由于安全性限制的问题,可能会对跨域的XML文件载入做出限制。例如本地执行的页面不可以载入远程的XML文件,或者A站点的页面不可以试图读取B站点的XML文件等,否则会造成错误。•在使用“load”方法远程载入XML文件时,由于网络的延时和文件的大小等问题影响,可能会出现较长的延时。这时候可以通过定义XMLDocument对象的“async”属性来确定载入的同步或异步模式。此属性的默认值为“false”,即同步。•所谓“同步”模式,即页面中的一切代码执行都被暂停,直到该控件的所有内容自服务器端下载完毕,才会继续执行下去。而“异步”模式下,则“load”方法被调用时,该控件试图下载指定位置的资源,但并不等待下载结束,程序就继续执行了下去。因此在页面的表现上,同步模式时。如果指定的XML文件较大,且网络传输速度较慢时,程序会出现较长时间的停顿,类似于死机的状态。而异步模式就不存在此类问题。xmldocument对象支持的事件•ondataavalible•onreadystatechange•1-发送请求2-自服务器下载数据3-对下载的数据进行解析4-解析完毕3.4“documentElement”对象•和HTML的DOM模型中的document对象类似,XMLDocument对象也具有“documentElement”属性。此属性指向此XML文档中的根元素。例如对于下面的XML文档:•?xmlversion=1.0encoding=gb2312?•所有书籍•!--XML文档中的注释--•图书id=book01type=bookinfo•名称<鹿鼎记>/名称•/图书•/所有书籍•使用XML控件的“load”或“loadXML”方法载入后,控件的“xml”属性返回字符串“?xmlversion=1.0encoding=gb2312?所有书籍……/所有书籍”。控件的“documentElement”对象的“xml”属性返回字符串“所有书籍……/所有书籍”。•也就是说,XML控件的“documentElement”对象指向的是文档中,除了处理指示外的,最底层的XML元素节点。4XML控件的节点对象•XML文档对象中,每一个组成元素被称为一个节点。需要注意的是,不仅仅标签所代表的元素是节点,属性、文档声明等对象都是XML控件的节点对象的一种。16.4.1XML控件的节点对象类型•XML中节点对象类型分为12类:•(1)元素节点,(2)属性节点,(3)文本节点,(4)“CDATA”节点,(5)实体引用节点,字符串值“NODE_ENTITY_REFERENCE”,节点类型值为“5”。(6)实体节点,(7)处理指示节点,字符串值“NODE_PROCESSING_INSTRUCTION”,节点类型值为“7”。(8)注释节点,字符串值“NODE_COMMENT”,节点类型值为“8”。(9)文档对象节点,字符串值“NODE_DOCUMENT”,节点类型值为“9”。(10)文档类型节点,字符串值“NODE_DOCUMENT”,节点类型值为“10”。•(11)文档片段节点,字符串值“NODE_DOCUMENT_FRAGMENT”,节点类型值为“11”。(12)符号(标记)节点,字符串值“NODE_DOCUMENT_FRAGMENT”,节点类型值为“12”。16.4.2XML元素节点的属性和方法•表列出了XML元素节点的所有属性。xml元素节点的方法4.3移动XML元素在文档中的位置•对于每一个XML元素节点来说,都具有方法“appendChild”和“insertBefore”。•“appendChild(node)”方法用于将指定的XML元素节点作为子节点,插入到当前节点的子节点集的最后位置,下面是一个使用“appendChild”方法的例子:•script•//生成新的XML
本文标题:JavaScript操作XML
链接地址:https://www.777doc.com/doc-3873669 .html