您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 第6章 解析器和应用程序接口
第6章解析器和应用程序接口6.1解析器对于应用程序来说,处理XML文档,理解文档中的数据的含义,提取数据,创建一系列的事件或者是新的数据结构,必须需要XML解析器。XML解析器就是能够识别XML文档信息的语法分析程序。6.1.1了解解析器解析器解析XML文档的步骤读入XML文档。检查XML文档是否符合语法规则。将XML文档转换为可以被应用程序处理的格式。解析输出,由API接口对XML文档内容进行访问,或由事件处理程序处理生产的事件。6.1.2验证解析器和非验证解析器进行有效性验证的解析器:除了检查语法格式是否正确,还需结合DTD和XMLSchema对XML有效性进行检查。不进行有效性验证的解析器:只负责语法检查,对包含内部DTD定义的XML文档进行格式正确性的验证,但对于引用外部DTD和XMLSchema的XML文档不进行有效性的验证。6.1.3解析器和应用程序6.2文档对象模型DOMDOM就是一个对象化的XML数据接口,一个与语言无关、与平台无关的标准接口规范。它定义了HTML文档和XML文档的逻辑结构,给出了一种访问和处理HTML文档和XML文档的方法。利用DOM,程序开发人员可以动态地创建文档,遍历文档结构,添加、修改、删除文档内容,改变文档的显示方式等等6.2.2DOM解析器DOM为我们提供的访问XML文档信息是一棵根据XML文档生成的节点树。这棵节点树中,有一个根节点--Document节点,所有其他的节点都是根节点的后代节点。节点树生成之后,就可以通过DOM接口访问、修改、添加、删除、创建树中的节点和内容。6.2.2DOM解析器文档对象模型利用对象来把文档模型化,这些模型不仅描述了文档的结构,还定义了模型中对象的行为。文档树中的结点并不是数据结构,而是对象,包含了一系列的方法和属性。6.2.2DOM解析器Client.xml?xmlversion=1.0encoding=gb_2312?addressbookpersonsex=malename张三/nameemailzhs@xml.net.cn/email/personpersonsex=malename李四/nameemaills@xml.net.cn/email/person/addressbook6.2.2DOM解析器DOM的四个基本接口Document接口Node接口NodeList接口NameNodeMap接口6.2.3使用DOM接口访问文档1、创建Document对象创建Document对象是一切操作的基础。通过创建Document对象,应用程序或者脚本就得到了对XML文档进行操作的入口。DimdocSetdoc=CreateObject(“Microsoft.XMLDOM”)2、加载XML文档在加载前先设置XML文档解析运行的条件,文档加载之后,就形成了DOM结点树DimdocSetdoc=CreateObject(“Microsoft.XMLDOM”)doc.anync=Falsedoc.load(client.xml)3、访问文档取文档的根元素:setroot=doc.documentElement建立好对根元素的引用,就可以根据结点树的层次关系,对结点进行遍历访问文档childNodes(i):返回当前结点的第i+1个子元素nodeValue:取出文本结点或属性结点的文本值或属性值text:返回当前结点及其所有子结点的文本值getAttribute(属性名):取属性值client.xml文档中,访问到“李四”这个文本结点personNode=root.childNodes(1)nameNode=personNode.childNodes(0)textNode=nameNode.childNodes(0)textName=textNode.nodeValuetextNode=root.childNodes(1).childNodes(0).textclient.xml文档中,访问到第二个人的sex这个属性结点的值personNode=root.childNodes(1)sexNode=personNode.getAttribute(sex)4.添加元素步骤:定位到插入元素的位置,也就是要插入结点的父结点用createTextNode创建文本结点用createElement创建元素结点用appendChild把文本结点挂在元素结点下用appendChild把元素结点插入相应的位置添加元素createElement(元素名):创建指定元素名的元素createTextNode(文本):创建指定文本的文本结点appendChild(结点名):在指定结点的子结点列表末尾添加一个新结点insertBefore(新结点,指点结点):方法在指定的现有结点之前插入了一个结点在client.xml中,给第一个person元素增添一个北大方正的company元素node=root.childNodes(0)newNode=doc.createElement(company)node.insertBefore(newNode,node.lastNode)textNode=doc.createTextNode(北大方正)node.childNodes(1).appendChild(textNode)在client.xml中,给第一个person元素的company元素添加type属性,属性值为外资。node=root.childNodes(0)newNode=doc.createElement(company)node.insertBefore(newNode,node.lastNode)textNode=doc.createTextNode(北大方正)node.childNodes(1).appendChild(textNode)newNode.setAttribute(“type”,“外资”)5.删除、修改元素removeChild:删除子结点操作在删除某个节点时,以该节点为根的子树将整个被删除元素内容的改变包括元素名称、元素属性、元素所包含的文本内容等项目的改变。删除第一个person结点的company子结点node=root.childNodes(0)oldNode=node.removeChild(node.childNodes(1))把张三的电子邮件地址更改为zhs@pku.edu.cnnode=root.childNodes(0)emailNode=node.childNodes(1)emailNode.childNodes(0).nodeValue=zhs@pku.edu.cn
本文标题:第6章 解析器和应用程序接口
链接地址:https://www.777doc.com/doc-3356276 .html