dom4j解析XML文档人文社科_第1页
dom4j解析XML文档人文社科_第2页
dom4j解析XML文档人文社科_第3页
dom4j解析XML文档人文社科_第4页
dom4j解析XML文档人文社科_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1/1dom4j解析XML文档-人文社科

dom4j解析XML文档

DOM4J解析XML文档学习目标把握dom4j的概念和特点把握dom4j的常用接口娴熟把握使用dom4j解析XML文档娴熟把握使用访问者模式遍历XML文档把握使用dom4j创建和修改XML文档

dom4j解析XML文档

JAXP虽然在DOM和SAX解析机制上进行了肯定的抽象,但是对XML解析特别繁琐,编程代码冗长,可读性不高。因此在JAVA领域消失了两个开源的XML解析器:dom4j和JDOM。dom4j的开发者说:使用dom4j来解析XML文档,无须参考任何图书,只要有基本的DOM概念,那么对着dom4j的API文档即可使用dom4j解析。

dom4j解析XML文档

dom4j概述dom4j是一套开源的XML解析工具,完全支持DOM、SAX和JAXP机制。与它们相比,dom4j更为简洁易用,因此实际项目中往往选择dom4j作为XML解析器。dom4j没有供应其他语言版本,只供应JAVA语言版本。

dom4j解析XML文档

dom4j的封装和优势dom4j在很大程序上简化了XML的处理方式。从表面上看,dom4j有点类似于DOM解析机制,也将XML文档转换为一棵结构化树(dom4j树),但dom4j树的处理方式比DOM树更为简洁。dom4jDOM由于dom4j如此优秀,许多优秀的开源项目都采用dom4j作为XML解析器,在实际的开发过程中,它通常是首选。

dom4j解析XML文档

面对接口编程它的实质是以其他XML解析器为基础,dom4j采纳面向接口编程的方式来处理XML文档解析,这就允许dom4j的底层可以在不同的解析机制之间自由切换。

支持多种解析机制

DOMReader:它负责依据W3C的DOM树创建dom4j树SAXReader:它基于SAX解析机制来分析一份XML文档,并将其转换为dom4j树XPP3Reader:其底层需要依靠于XMLPulllParser3.x来解析XML文档,并将其转换为dom4j树XPPReader:其底层需要依靠于XMLPulllParser2.x来解析XML文档,并将其转换为dom4j树

dom4j解析XML文档

listbook疯狂XML讲义/bookgame扫雷/gamesport乒乓球/sport/list

在猎取list…/节点之后,假如盼望猎取它包含的3个子节点的数节点之后,假如盼望猎取它包含的个子节点的数在猎取节点之后据,需要使用如下代码//猎取list元素下的全部子元素NodeListitemList=list.getChildNodes;//遍历每个子元素for(intI=0;IitemList.getLength;I++){System.out.println(itemList.item(j).getTextContent.trim);}

这种处理方式很是繁琐,元素调用元素调用getChildNodes方法返回该这种处理方式很是繁琐,list元素调用方法返回该元素的全部子节点,而不是全部的子元素,元素的全部子节点,而不是全部的子元素,这使得程序的处理过程特别繁琐。程特别繁琐。

dom4j解析XML文档

//猎取list元素下的全部子元素ListitemList=list.elements;//遍历每个子元素for(intI=0;IitemList.getLength;I++){Elementele=(Element)itemList.get(I);System.out.println(els.getText);}

list元素调用元素调用elements方法返回该元

素的全部子元素包括子节点方法返回该元素的全部子元素(包括子节点元素调用方法返回该元素的全部子元素和该节点的文本内容),dom4j处理方式更接近平常自然的思维。和该节点的文本内容)处理方式更接近平常自然的思维。处理方式更接近平常自然的思维

dom4j解析XML文档

下载和安装dom4j登录dom4j的官方站点下载最新版本dom4j1.6.1下载完成后得到dom4j1.6.1.zip,将其解压缩可得到如下名目结构

docs:docs:该名目下存放了dom4j的说明文件和API文档dom4jAPIlib:该名目下存放了dom4j编译和运行所依靠的第三方类库Src:该名目下存放了dom4j项目的全部源文件xdocs:该名目存放dom4j的一些相关文档,是XML格式xml:该名目下存放了dom4j供应了一些简洁的范例xml文档dom4j-1.6.1.jar:dom4j的核心JAR包

将dom4j-1.6.1.jar添加到系统CLASSPATH环境变量中

dom4j解析XML文档

Dom4j常用的API【重点把握】ElementBranchDocument

Cloneable

Node

Attribute

DocumentType

CharacterData

ProcessingInstruction

CDATA

Text

Comment

dom4j解析XML文档

Dom4j的API接口NodeBranchElementDoucmentAttributeDocumentTypeProceesingInstructionCharacterDataCDATATextComment

简洁说明它是dom4j树中全部节点的跟接口它代表能包含子节点的节点它代表XML元素它代表XML文档根它代表XML元素属性它代表XML文档中的DOCTYPE声明它代表XML文档中的处理指令它是全部文本元素的父接口它代表XML文档中的CDATA段它代表XML文档里的文本内容它代表XML文档里的解释内容

dom4j解析XML文档

除此之外,dom4j为解析xml文档还供应了DOMReader、SaxReader、XPP3Reader和XPPReader4个解析器,负责将不同形式的XML文档解析成dom4j树。对应地,dom4j也供应了如下几个Writer:DOMWriter:该输出工具类负责将dom4j树转换成为W3C的DOM树SAXWriter:该输出工具类负责将dom4j树输出给SAX的ContendHandler处理XMLWriter:该工具类将dom4j树转换成对应的XML文档,并可输出到指定流中

dom4j解析XML文档

除此之外,假如程序需要创建一份新Document,dom4j还供应了如下2个工具类DocumentFactory:该工具供应createDocument方法用于创建Document对象DocumentHelper该工具供应了大量静态方法用于创建XML文档各组成部分

dom4j解析XML文档

使用dom4j解析XML文档【重点把握】使用dom4j解析XML文档的过程是这样的,首先是将XML文档转换成dom4j树之后,使用全都的编程模型来处理XML文档。我们可以采纳递归方法来猎取整份XML文档里包含的信息。publicclassDom4jRead{publicstaticvoidmain(Stringargs)throwsException{//使用SAXReader来解析XML文档SAXReaderreader=newSAXReader;Documentdoc=reader.read(newFile(book.xml));Elementroot=doc.getRootElement;parse(root);}

dom4j解析XML文档

publicstaticvoidparse(Elementele){//处理当前元素包含的全部属性pars

eAttribute(ele);//猎取当前元素包含的全部子元素Listel=ele.elements;//遍历每个子元素for(Objecte:el){Elementelement=(Element)e;//假如该元素的内容不是只包含字符串if(!element.isTextOnly){parse(element);}else{//处理当前元素的全部属性parseAttribute(element);//猎取当前元素的内容System.out.println(element.getQName.getName++element.getText);}}}

dom4j解析XML文档

//定义一个方法处理指定元素的全部属性publicstaticvoidparseAttribute(Elementele){//猎取Element元素的全部属性ListattList=ele.attributes;//遍历Element元素每个属性for(Objecte:attList){Attributeattr=(Attribute)e;//访问当前元素的每个属性的属性值System.out.println(ele.getQName.getName+元素的+attr.getQName.getName+属性值为:+attr.getValue);}}

dom4j解析XML文档

使用访问者遍历XML文档【重点把握】dom4j的Node接口中定义了一个accept(Visitorvistor)方法,由于该方法是在Node接口中定义的,因此dom4j树中的任何节点都可以调用该方法,调用该方法时传入的Visitor对象将负责处理该节点及其全部子节点的信息。Visitor接口和VisitorSupport类的关系就像大事监听接口和大事适配器一样。VisitorSupport类实现了Visitor接口,并为每个方法供应了空实现。当开发者通过继承VisitorSupport类来实现自己的Visitor时就可以只重写自己关系的方法,从而避开重写Visitor接口里的全部方法。

dom4j解析XML文档

Vistor接口的方法visit(Attributenode)visit(CDATAnode)

简洁说明当Visitor对象访问属性节点时将回调该方法当Visitor对象访问CDATA片段时将回调该方法当Visitor对象访问解释节点时将回调该方法当Visitor对象访问文档根节点时将回调该方法当Visitor对象访问DTD内容将回调该方法当Visitor对象访问元素节点将回调该方法当Visitor对象访问Entity节点将回调该方法当Visitor对象访问命名空间时回调该方法当Visitor对象访问处理指令时回调该方法当Visitor对象访问文档内容时将回调该方法

visit(Commentnode)visit(Documentdocument)visit(DocumentTypedocumentType)visit(Elementnode)visit(Entitynode)visit(Namespacenamespace)visit(ProcessingInstructionnode)visit(Textnode)

dom4j解析XML文档

classYeekuVistorextendsVisitorSupport{privateStringcurrentElement;//保存当前正在处理的节点//当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(ProcessingInstruc

tionnode){System.out.println(处理指令+node.getTarget+的内容是:+node.getText);}}

dom4j解析XML文档

publicclassVisitorRead{publicstaticvoidmain(Stringargs)throwsException{SAXReaderreader=newSAXReader;Documentdoc=reader.read(newFile(book.xml));//使用访问

温馨提示

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

评论

0/150

提交评论