第6章DOM解析XML文档

上传人:无*** 文档编号:244330893 上传时间:2024-10-03 格式:PPT 页数:22 大小:535KB
返回 下载 相关 举报
第6章DOM解析XML文档_第1页
第1页 / 共22页
第6章DOM解析XML文档_第2页
第2页 / 共22页
第6章DOM解析XML文档_第3页
第3页 / 共22页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,第三级,*,1,第,6,章,DOM,解析,XML,文档,XML,能很好、方便的描述和组织数据,在很多实际问题中,人们非常关心,XML,的数据结构,并根据其结构提取自己需要的数据。,XML,解析器是,XML,和应用程序之间的一个软件组织,为应用程序从,XML,文件中解析出所需要的数据。常见的解析器包括基于,DOM,的解析器和基于事件的解析器。,在本章中,将会详细,XML,文档解析过程、,DOM,树模型、,DOM,基本接口、,DOM,的节点访问和,DOM,对文档的相关操作。,2,本章知识要点:,了解,XML,文档解析器,掌握,DOM,概念,熟练掌握,DOM,文档树模型,熟练掌握,DOM,级别接口,掌握,DOM,对象的创建和调用,熟练掌握访问各种类型节点,掌握动态创建,XML,文档,熟练掌握各种类型节点的添加、删除等操作,掌握异常处理,3,6.1 XML,文档解析,在我们程序中,经常需要对,XML,文档进行分析,以检索、修改、删除或重新组织其中的内容。例如,将应用程序运行所需的一些配置信息,以,XML,的格式保存在文件中,在程序启动时,读取,XML,文件,从中取出有用的信息,这就需要对,XML,文档解析。,6.1.1 XML,解析器,XML,处理都从解析开始。无论使用高层编程语言(如,XSLT,)还是低层,Java,编程,第一步都是要读入,XML,文件,解码结构和检索信息等等,这就是解析。解析可能是开发人员能够使用的最基本的服务。解析文档时面临的第一个选择是采用现成的解析库(基本上每种编程语言都有,包括,COBOLCommon Business Oriented Language,)还是自己创建一个。答案非常简单:选择现成的库。,4,6.1.2,常用解析器接口,一个,XML,解析器可以支持多个,API,接口,如,DOM,接口或,SAX,接口,可以把这些解析器称为,DOM,解析器或,SAX,解析器。现在比较和常用的解析器有,DOM,解析器、,SAX,解析器、,DOM4J,和,JDOM,等。,5,6.2 DOM,介绍,DOM,是,Document Object Model,的缩写,即文档对象模型,是,W3C,组件推荐的处理,XML,的标准接口,定义了所有文档元素的对象和属性,以及访问它们的方法(接口)。,W3C,文档对象模型(,DOM,)定义了访问诸如,XML,和,XHTML,文档的标准,是一个使程序和脚本有能力动态地访问和更新文档的内容、结构以及样式的平台和语言中立的接口。,6,6.3 DOM,文档树模型,DOM,规范的核心就是树模型,对于要解析的,XML,文档,解析器会把,XML,文档加载到内存中,在内存中为,XML,文件建立逻辑形式的树。从本质上说,,DOM,就是,XML,文档的一个结构化的视图,它将一个,XML,文档看作是一棵节点树,而其中的每一个节点代表一个可以与其进行交互的对象。树的节点是一个个的对象,这样通过操作这棵树和这些对象就可以完成对,XML,文档的操作,为处理文档的所有方面提供了一个完美的概念性框架。,7,6.4 DOM,接口对象,不管,XML,文档有多简单或者多复杂,在加载到内存中都会被转化成一棵对象节点树。该节点树中存在了不同类型的节点,如属性形成的节点、元素标记形成的节点、注释形成的节点、标记内容形成的节点。节点树生成之后,就可以通过,DOM,接口访问、修改、添加、删除、创建树中的节点和内容。,8,6.4.1 DOM,基本接口,在,DOM,接口规范中,包含有多个接口。其中常用的基本接口有,Document,接口、,Node,接口、,NamedNodeMap,接口、,NodeList,接口、,Element,接口、,Text,接口、,CDATASection,接口和,Attr,接口等接口。其中,,Document,接口是对文档进行操作的入口,它是从,Node,接口继承过来的。,Node,接口是其他大多数接口的父类,象,Documet,、,Element,、,Attribute,、,Text,、,Comment,等接口都是从,Node,接口继承过来的。,NodeList,接口是一个节点的集合,它包含了某个节点中的所有子节点。,NamedNodeMap,接口也是一个节点的集合,通过该接口,可以建立节点名和节点之间的一一映射关系,从而利用节点名可以直接访问特定的节点。,9,6.4.2 DOM,对象,接口是一组方法声明的集合,没有具体的实现。这些方法具有共同的特征,即共同作用于,XML,文档中某一个对象的一类方法。当我们用编程语言实现这个接口的一个对象,那么该对象我们就可以称为,DOM,对象。如,Attr,这个接口,里面封装的关于节点属性方面的操作方法,如获的属性的名称,获得属性的值等。如果一个,Attr,对象实现了这个接口,那么此对象就是,DOM,对象,即属性操作对象。,10,11,6.5 DOM,使用,创建,DOM,对象、加载,XML,文档和处理,XML,文档是使用,DOM,解析器处理解析,XML,文档的基本步骤。在本节中,我们将详细介绍,DOM,对象在不同语言中的创建方式、加载,XML,文档和访问,XML,文档的不同的节点。,12,6.5.1 DOM,对象创建及调用,本章将主要介绍,Sun,公司的,DOM,解析器的创建和使用,,Sun,公司的解析器是支持,DOM level 3,的解析器。为了让,Java,开发人员以一种标准的方式对,XML,进行编程,,Sun,公司制定了,JAXP(Java API for XML Processing),规范。,JAXP,没有提供解析,XML,的新方法,也没有为,XML,的处理提供新功能,它只是在解析器之上封装了一个抽象层,允许开发人员以独立于厂商的,API,调用访问,XML,数据。,6.5.2,访问,Document,节点,Java,应用程序可以从,Dcoument,节点的子孙节点中获取整个,XML,文件中数据的细节。,Document,节点对象两个直接子节点,类型分别是,DocumentType,类型和,Element,类型,其中的,DocumentType,节点对应着,XML,文件所关联的,DTD,文件,可通过进一步获取该节点子孙节点来分析,DTD,文件中的数据;,Element,类型节点对应着,XML,文件的根节点,可通过进一步获取该,Element,类型节点子孙节点来分析,XML,文件中的数据。,13,6.5.3,访问,Element,节点,Element,接口是比较重要的接口,该接口被实例化后,会对应节点树中的,Element,节点,我们这里称为,Element,节点。,Element,节点可以有,Element,子节点和,Text,子节点(规范的,XML,文件的标记可以有子标记和文本数据)。若一个节点使用,getNodeType,()方法测试,如果返回值为,Node.ELEMENT_NODE,,那么该节点就是,Element,节点。,14,名称,说明,getTagName(),返回该节点的名称,节点名称就是对应的,XML,文件的标记名称,getAtrribute,(,String name,),返回该节点中参数,name,指定的属性值,,XML,标记中对应的属性值,getElementsByTagName,(,String name,),返回一个,NodeList,对象,hasAttribute,(,String name,),判断当前节点是否存在名字为,name,的指定的属性,removeAttribute(String name),通过名称移除一个属性,setAttribute(String name,String value),添加一个新属性,6.5.4,访问,Text,节点,通过,Text,接口实现的对象称为,Text,对象,该对象对应着节点树中的文本节点,也可把该对象称为,Text,节点对象。我们知道,,Element,节点对象和元素标记相对应,文本内容和,Text,节点相对应。若判断一个节点是否是,Text,节点,可通过,getNodeType,()判断,如该方法返回值为,Node.TEXT_NODE,,那么该节点就是,Text,节点。,Element,节点可以有,Text,节点和,Element,节点。,15,名称,说明,getWholeText(),返回,Text,节点(逻辑上与此节点相邻的节点)的以文档顺序串接的所有文本,isElementContentWhitespace(),返回此文本节点是否包含元素内容空白符,即经常所称的“可忽略的空白符”,replaceWholeText(String content),将当前节点和所有逻辑上相邻的文本节点的文本替换为指定的文本,splitText(int offset),在指定的,offset,处将此节点拆分为两个节点,并将二者作为兄弟节点保持在树中,6.5.5,访问,Attr,节点,XML,文件中标记所包含的属性,在节点树中,对应的是,Attr,节点。,Attr,节点是,Attr,接口的实例化对象,,Attr,接口表示,Element,对象中的属性,,Attr,对象继承,Node,接口,但由于它们实际上不是它们描述的元素的子节点,,DOM,不会将它们看作文档树的一部分,,DOM,认为元素的属性是其特性,而不是一个来自于它们所关联的元素的独立的身份;这应该使实现把这种特征作为与所有给定类型的元素相关联的默认属性更为有效。,16,名称,说明,getName(),返回属性名称,getOwnerElement(),此属性连接到的,Element,节点;如果未使用此属性,则为,null,getValue(),检索时,该属性值以字符串形式返回,setValue(String value),检索时,该属性值以字符串形式返回,17,6.6 DOM,对文档操作,通过,DOM,不但可以遍历,XML,文档指定的节点,如,Element,节点、文本节点和属性节点等,还可以对在内存中存在的树模型进行操作,如添加、删除或修改节点,添加、删除或修改属性,添加元素内容等。,6.6.1,动态创建,XML,文档,DOM,解析器通过在内存中建立和,XML,结构相对应的树状结构数据,使得应用程序可以方便地获得,XML,文件中的数据。,JAXP,也提供了使用内存中的树状结构数据建立一个,XML,文件的,API,,即使用解析器得到的,Document,对象建立一个新的,XML,文件。,18,名称,说明,appendChild(Node newChild),向当前节点增加一个新的子节点,并返回这个新节点,removeChild(Node oldChild),删除参数指定的子节点,并返回被删除的子节点,replaceChild(Node newChild,Node oldChild),替换子节点,并返回被替换的子节点,removeAttributeNode(Attr oldAttr),删除,Element,节点的属性,setAttribute(String name,String value),为,Element,节点增加新的属性及属性值,如果该属性已经存在,新的属性将替换旧的属性。,replaceWholeText(String content),替换当前,Text,节点的文本内容,appendData(String arg),向当前,Text,节点尾加文本内容,insertData(int offset,String arg),向当前,Text,节点插入文本内容,插入的位置由参数,offset,指定,即第,offset,个字符的后继位置,deleteData(int offset,int count),删除当前节点的文本内容中的一部分。被删除的范围由参数,offset,和,count,指定,即从第,offset,个字符后续的,count,个字符,replaceData(int offset,int c
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!