欢迎来到天天文库
浏览记录
ID:42992283
大小:379.51 KB
页数:22页
时间:2019-09-24
《ITjob就业培训java教材22》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第二十二章:使用Java解析XMLITjob就业培训第二十二章:使用Java解析XML学习目标n解析器的介绍n文档对象模型(DOM)解析实例nSAX解析实例nDOM4J解析实例nJDOM解析实例nJAVA操纵XML实例讲解417第二十二章:使用Java解析XMLITjob就业培训解析器的介绍XML解析器是读取XML文档并分析其结构的代码。这一部分将介绍XML解析器是如何工作的。将讨论不同类型的XML解析器及何时使用它。一般而言使用解析器需要以下步骤:n创建一个解析器对象n使解析器指向您的XML文档n处理结果显然第三步最为复杂。一旦知道了X
2、ML文档的内容,比方说,您可能希望生成一个Web页面,创建一个订单或者做一个饼图。这里讨论的常见XML解析工具使这项工作大大简化。解析器有不同的分类方法:n验证和非验证解析器n支持一种或多种XMLSchema语言的解析器n支持DocumentObjectModel(DOM)的解析器n支持SimpleAPIforXML(SAX)的解析器我们已知有三种不同类型的XML文档:n结构良好的文档:这类文档符合XML基本规则(属性必须放在引号中,标签必须正确嵌套等)。n有效文档:这些结构良好的文档同时还符合文档类型定义(DTD)或XMLSchema所
3、定义的规则。n无效文档:除以上两种文档外的所有其他文档。如果您有一个XML文档符合XML的基本规则,那么它就是一个结构良好的文档。如果该文档还满足您的公司所定义的支出帐目文档规则,那么它也是有效的。如果XML解析器发现XML文档不是结构良好的,XMLSpecification要求解析器报告一个致命错误。验证解析器:在解析时验证XML文档,而非验证解析器:不验证文档。换句话说,如果一个XML文档是结构良好的,那么非验证解析器并不关心文档是否符合DTD或模式中定义的规则,甚至不关心该文档是否符合DTD或模式中定义的规则,甚至不关心该文档是否有
4、这样的规则。(多数验证解析器都默认关闭验证功能。)那么为什么要使用非验证解析器呢?有两个很好的理由:速度和效率。XML解析器读取DTD或者模式,建立规则引擎保证XML文档中的每个元素和属性都遵循这些规则,需要做大量的工作。如果您确信一个XML文档是有效的,那么就可以完全跳过验证。根据文档规则复杂程度的不同,这样可以节约相当可观的时间和内存。如果您的代码不够健壮,它从XML文档中得到输入数据,并且该代码要求文档遵循特定的DTD或者模式,那么您可能就不得不验证所有的内容,不论代价多么高,多么浪费时间。DOM是W3C推荐的正式标准。它定义了一个
5、接口,程序能够访问和更新XML文档的结构。如果一个XML解析器声称支持DOM,就意味着它实现了该标准中定义的接口。目前,有三个级别的DOM是正式的推荐标准,被命名为DOMLevel1,DOMLevel2和DOMLevel3。本章中所讨论的DOM功能都是DOMLevel2的一部分。417第二十二章:使用Java解析XMLITjob就业培训DOM解析器:当你使用DOM解析器解析一个XML文档时,您得到一棵结构树,它表示XML文档的内容。所有的文本,元素和属性,都在这个树结构中解析的过程:解析后的XML文档。
6、encoding="UTF-8"?>goudan28studentagenamegoudan28DOM还提供各种不同的功能,可用于分析和操作树的内容和结构。DOM是处理XML数据的传统方法。使用DOM时,数据以树状结构的形式被加载到内存中,所以,DOM解析是一个比较耗费内存的操作。如上图所示,矩形框表示元素节点,椭圆表示文本节点。DOM使用父子关系。例如,在这个例子中,student是具有五个孩子的根元素:三个文本节点(空白),以及两个元素节点name和
7、age。要认识到的一件重要事情是,name和age节点实际上具有null值。相反,它们具有文本节点(goudan和28)作为孩子。DOM以及广义的基于树的处理具有几个优点首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX417第二十二章:使用Java解析XMLITjob就业培训那样是一次性的处理。DOM使用起来也要简单得多。另一方面,在内存中构造这样的树涉及大量的开销。大型文件完全占用系统内存容量的情况并不鲜见。此外,创建一棵DOM树可能是一个缓慢的过程。为了满
8、足该缺点,我们使用SAX(SimpleAPIforXML)API处理XML文档内容。它的设计目标是占用更少的内存,把更多的工作交给程序员。SAX和DOM是互补的,有各自的适用环境。请看下图解析
此文档下载收益归作者所有