《domj解析XML文档》PPT课件.ppt_第1页
《domj解析XML文档》PPT课件.ppt_第2页
《domj解析XML文档》PPT课件.ppt_第3页
《domj解析XML文档》PPT课件.ppt_第4页
《domj解析XML文档》PPT课件.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四卷:XML解析器,DOM4J,第一次实验报告提交,提交内容:本周实验内容(DOM4J)上交时间:第十二周小课上交打印稿提交对象:学号尾号为1、3、5、7、9的同学。其余同学提交电子版到FTP。,内容回顾,描述SAX的基本内容描述SAX的事件驱动模型解释SAX解析器是如何工作的列出SAX接口并描述相关的方法与DOM之间的比较,DOM4J解析XML文档,学习目标掌握dom4j的概念和特点掌握dom4j的常用接口熟练掌握使用dom4j解析XML文档熟练掌握使用访问者模式遍历XML文档掌握使用dom4j创建和修改XML文档,JAXP虽然在DOM和SAX解析机制上进行了一定的抽象,但是对XML解析非常繁琐,编程代码冗长,可读性不高。因此在JAVA领域出现了两个开源的XML解析器:dom4j和JDOM。dom4j的开发者说:使用dom4j来解析XML文档,无须参考任何图书,只要有基本的DOM概念,那么对着dom4j的API文档即可使用dom4j解析。,dom4j概述,dom4j是一套开源的XML解析工具,完全支持DOM、SAX和JAXP机制。与它们相比,dom4j更为简单易用,因此实际项目中往往选择dom4j作为XML解析器。dom4j没有提供其他语言版本,只提供JAVA语言版本。,dom4j的封装和优势,dom4j在很大程序上简化了XML的处理方式。从表面上看,dom4j有点类似于DOM解析机制,也将XML文档转换为一棵结构化树(dom4j树),但dom4j树的处理方式比DOM树更为简单。由于dom4j如此优秀,很多优秀的开源项目都采用dom4j作为XML解析器,在实际的开发过程中,它通常是首选。,面向接口编程它的实质是以其他XML解析器为基础,dom4j采用面向接口编程的方式来处理XML文档解析,这就允许dom4j的底层可以在不同的解析机制之间自由切换。支持多种解析机制DOMReader:它负责根据W3C的DOM树创建dom4j树SAXReader:它基于SAX解析机制来分析一份XML文档,并将其转换为dom4j树XPP3Reader:其底层需要依赖于XMLPulllParser3.x来解析XML文档,并将其转换为dom4j树XPPReader:其底层需要依赖于XMLPulllParser2.x来解析XML文档,并将其转换为dom4j树,疯狂XML讲义扫雷乒乓球,/获取list元素下的所有子元素NodeListitemList=list.getChildNodes();/遍历每个子元素for(intI=0;IitemList.getLength();I+)System.out.println(itemList.item(j).getTextContent().trim();,在获取节点之后,如果希望获取它包含的3个子节点的数据,需要使用如下代码,这种处理方式很是繁琐,list元素调用getChildNodes()方法返回该元素的所有子节点,而不是所有的子元素,这使得程序的处理过程非常繁琐。,/获取list元素下的所有子元素ListitemList=list.elements();/遍历每个子元素for(intI=0;I+element.getText();,/定义一个方法处理指定元素的所有属性publicstaticvoidparseAttribute(Elementele)/获取Element元素的所有属性ListattList=ele.attributes();/遍历Element元素每个属性for(Objecte:attList)Attributeattr=(Attribute)e;/访问当前元素的每个属性的属性值System.out.println(ele.getQName().getName()+元素的+attr.getQName().getName()+属性值为:+attr.getValue();,使用访问者遍历XML文档【重点掌握】,dom4j的Node接口中定义了一个accept(Visitorvistor)方法,由于该方法是在Node接口中定义的,因此dom4j树中的任何节点都可以调用该方法,调用该方法时传入的Visitor对象将负责处理该节点及其所有子节点的信息。Visitor接口和VisitorSupport类的关系就像事件监听接口和事件适配器一样。VisitorSupport类实现了Visitor接口,并为每个方法提供了空实现。当开发者通过继承VisitorSupport类来实现自己的Visitor时就可以只重写自己关系的方法,从而避免重写Visitor接口里的所有方法。,classYeekuVistorextendsVisitorSupportprivateStringcurrentElement;/保存当前正在处理的节点/当Visitor访问元素时回调该方法publicvoidvisit(Elementnode)if(node.isTextOnly()/如果节点内容全部是文本System.out.println(node.getName()+元素的值是:+node.getText();currentElement=node.getName();/当Visitor访问属性时回调该方法publicvoidvisit(Attributenode)System.out.println(currentElement+元素的+node.getName()+属性的值是:+node.getText();/当Visitor访问处理指令时回调该方法publicvoidvisit(ProcessingInstructionnode)System.out.println(处理指令+node.getTarget()+的内容是:+node.getText();,publicclassVisitorReadpublicstaticvoidmain(Stringargs)throwsExceptionSAXReaderreader=newSAXReader();Documentdoc=reader.read(newFile(book.xml);/使用访问者模式来访问XML文档doc.accept(newYeekuVistor();,Visitor里只实现visit(Elementnode)、visit(Attributenode)和visit(ProcessingInstructionnode)3个方法,这意味着该Vistor只处理XML文档里的元素,属性和处理指令。,注意,访问者模式依然有点类似于事件机制的解析方式。区别是:访问者模式里的Vistor对象既充当解析器,也充当事件监听器。当使用Vistor访问XML文档时,访问不同的节点元素时将自动触发Vistor里对应的方法。,使用dom4j来创建XML文档也是非常简单的,dom4j提供了DocumentFactory工具类用于创建一个新的Document对象。得到新的Document对象之后,可按如下步骤提供所需的XML文档。以Document为根,不断地添加增加的元素节点为需要增加的属性节点添加适合的属性,并设置属性值不断重复上面2个步骤,即可以得到一棵内存dom4j树得到dom4j树之后,使用XMLWriter将dom4j树输出到指定文件即可得到一份XML文档,使用dom4j创建XML文档【重点掌握】,书籍00书籍110书籍220书籍330,从上面的程序可以看出,使用dom4j创建XML文档其实非常简单,程序员只要将Document当成“树根”,然后通过该“树根”不断地“长出”新节点,每个新节点又可重新“长出”新节点,这样就可最终得到一颗内存中的dom4j树,最后使用XMLWriter输出dom4j树即可。,使用dom4j修改XML文档【重点掌握】,使用dom4j可以非常方便地修改XML文档,步骤如下:解析XML文档,将XML文档转换成dom4j树利用dom4j树提供的导航方法找到需要修改的节点修改指定节点,或为指定节点添加新的子节点输出修改过的dom4j树,setStripWhitespaceText:设置解析器将XML元素里相邻的字符串内容合并在一起进行处理s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论