您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > [Java基础教程-兄弟连马剑威]-139-XML
XML马剑威第139讲课程大纲1、什么是XML2、XML的用途3、DOM解析XML4、SAX解析XML5、JDOM解析XML6、DOM4J解析XML7、通过对象生成XML文件8、各种解析方法比较1、什么是XML•XML(ExtensibleMarkupLanguage可扩展标记语言),XML是一个以文本来描述数据的文档。一个XML文档示例:?xmlversion=1.0encoding=UTF-8?personteacherid=1name小白/namedesc一个猥琐但不下流的淫/desc/teacherteacherid=2name威哥/namedesc一个高端大气上档次有内涵的淫/desc/teacher/person2、XML的用途•XML技术的用途:•(1)充当显示数据(以XML充当显示层)•(2)存储数据(存储层)的功能•(3)以XML描述数据,并在联系服务器与系统的其余部分之间传递。•从某种角度讲,XML是数据封装和消息传递技术。3、DOM解析XML•JAVA解析XML通常有两种方式,DOM和SAX•DOM:DocumentObjectModel(文档对象模型)•DOM的特性:•定义一组Java接口,基于对象,与语言和平台无关将XML文档表示为树,在内存中解析和存储XML文档,允许随机访问文档的不同部分。•DOM解析XML•DOM的优点,由于树在内存中是持久的,因此可以修改后更新。它还可以在任何时候在树中上下导航,API使用起来也较简单。3、DOM解析XML•解析步骤:•DocumentBuilderFactorybuilder=DocumentBuilderFactory.newInstance();•DocumentBuilderdb=builder.newDocumentBuilder();•db.parse(person.xml);•NodeListnode_person=doc.getElementsByTagName(person);4、SAX解析XML•SAX是SimpleAPIforXML的缩写•SAX是读取和操作XML数据更快速、更轻量的方法。SAX允许您在读取文档时处理它,从而不必等待整个文档被存储之后才采取操作。它不涉及DOM所必需的开销和概念跳跃。SAXAPI是一个基于事件的API,适用于处理数据流,即随着数据的流动而依次处理数据。SAXAPI在其解析您的文档时发生一定事件的时候会通知您。在您对其响应时,您不作保存的数据将会被抛弃。4、SAX解析XML•SAXAPI中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler,EntityResolver和ErrorHandler。实际上只要继承DefaultHandler类就可以,DefaultHandler实现了这四个事件处理器接口,然后提供了每个抽象方法的默认实现。•//创建SAX解析器工厂对象•SAXParserFactoryspf=SAXParserFactory.newInstance();•//使用解析器工厂创建解析器实例•SAXParsersaxParser=spf.newSAXParser();•//创建SAX解析器要使用的事件侦听器对象•PersonHandlerhandler=•newPersonHandler();•//开始解析文件•saxParser.parse(•newFile(fileName),handler);5、JDOM解析XML•JDOM是两位著名的Java开发人员兼作者,BrettMclaughlin和JasonHunter的创作成果,2000年初在类似于Apache协议的许可下,JDOM作为一个开放源代码项目正式开始研发了。•JDOM简化了与XML的交互并且比使用DOM实现更快,JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用。•下载地址:•、JDOM解析XML•解析步骤:•(1)SAXBuildersax=newSAXBuilder();•(2)Documentdoc=sax.build(….);•(3)Elementel=doc.getRootElement();(4)Listlist=el.getChildren();•(5)遍历内容6、DOM4J解析XML•dom4j是一个非常非常优秀的JavaXMLAPI,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在对主流的JavaXMLAPI进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包,Hibernate用它来读写配置文件。•下载地址:•、DOM4J解析XML•解析步骤:•(1)SAXReadersax=newSAXReader();•(2)Documentdoc=sax.read(Thread.currentThread().getContextClassLoader()•.getResourceAsStream(person.xml));•(3)Elementroot=doc.getRootElement();•(4)Iteratoriterator=root.elementIterator();•(5)遍历迭代器7、通过对象生成XML文件•根据对象生成XML文档.•使用Java提供的java.beans.XMLEncoder和java.beans.XMLDecoder类。•这是JDK1.4以后才出现的类•步骤:•(1)实例化XML编码器•XMLEncoderxmlEncoder=newXMLEncoder(newBufferedOutputStream(newFileOutputStream(newFile(“a.xml”))));•(2)输出对象•(3)关闭8、各种解析方法比较•JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。•SAX表现较好,这要依赖于它特定的解析方式。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。DOM4J是这场测试的获胜者,目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。谢谢Thanks
本文标题:[Java基础教程-兄弟连马剑威]-139-XML
链接地址:https://www.777doc.com/doc-7798138 .html