解析器的介绍
来源:互联网 发布:java里解压缩gzip文件 编辑:程序博客网 时间:2024/06/11 10:28
XML解析器是读取XML文档并分析其结构的代码。这一部分将介绍XML解析器是如何工作的。将讨论不同类型的XML解析器及何时使用它。
一般而言使用解析器需要以下步骤:
n 创建一个解析器对象
n 使解析器指向您的XML文档
n 处理结果
显然第三步最为复杂。一旦知道了XML文档的内容,比方说,您可能希望生成一个Web页面,创建一个订单或者做一个饼图。这里讨论的常见XML解析工具使这项工作大大简化。
解析器有不同的分类方法:
n 验证和非验证解析器
n 支持一种或多种XML Schema语言的解析器
n 支持Document Object Model (DOM)的解析器
n 支持Simple API for XML (SAX)的解析器
我们已知有三种不同类型的XML文档:
n 结构良好的文档:这类文档符合XML基本规则(属性必须放在引号中,标签必须正确嵌套等)。
n 有效文档:这些结构良好的文档同时还符合文档类型定义(DTD)或XML Schema所定义的规则。
n 无效文档:除以上两种文档外的所有其他文档。
如果您有一个XML文档符合XML的基本规则,那么它就是一个结构良好的文档。如果该文档还满足您的公司所定义的支出帐目文档规则,那么它也是有效的。如果XML解析器发现XML文档不是结构良好的,XML Specification要求解析器报告一个致命错误。
验证解析器:在解析时验证XML文档,而非验证解析器:不验证文档。换句话说,如果一个XML文档是结构良好的,那么非验证解析器并不关心文档是否符合DTD或模式中定义的规则,甚至不关心该文档是否符合DTD或模式中定义的规则,甚至不关心该文档是否有这样的规则。(多数验证解析器都默认关闭验证功能。)
那么为什么要使用非验证解析器呢?有两个很好的理由:速度和效率。XML解析器读取DTD或者模式,建立规则引擎保证XML文档中的每个元素和属性都遵循这些规则,需要做大量的工作。如果您确信一个XML文档是有效的,那么就可以完全跳过验证。根据文档规则复杂程度的不同,这样可以节约相当可观的时间和内存。如果您的代码不够健壮,它从XML文档中得到输入数据,并且该代码要求文档遵循特定的DTD或者模式,那么您可能就不得不验证所有的内容,不论代价多么高,多么浪费时间。
DOM是W3C推荐的正式标准。它定义了一个接口,程序能够访问和更新XML文档的结构。如果一个XML解析器声称支持DOM,就意味着它实现了该标准中定义的接口。目前,有三个级别的DOM是正式的推荐标准,被命名为DOM Level 1,DOM Level 2 和DOM Level 3。本章中所讨论的DOM功能都是DOM Level 2的一部分。
DOM解析器:当你使用DOM解析器解析一个XML文档时,您得到一棵结构树,它表示XML文档的内容。所有的文本,元素和属性,都在这个树结构中
解析的过程:
解析后的XML文档。
DOM还提供各种不同的功能,可用于分析和操作树的内容和结构。DOM是处理XML数据的传统方法。使用DOM时,数据以树状结构的形式被加载到内存中,所以,DOM解析是一个比较耗费内存的操作。如上图所示,矩形框表示元素节点,椭圆表示文本节点。DOM使用父子关系。例如,在这个例子中,student是具有五个孩子的根元素:三个文本节点(空白),以及两个元素节点name和age。要认识到的一件重要事情是,name 和 age节点实际上具有null值。相反,它们具有文本节点(goudan 和 28)作为孩子。
原文:http://www.5itjob.com/java-peixun/607.html
- 解析器的介绍
- Expat XML解析器的介绍
- Json解析的简单介绍
- 实例介绍joomla! xml解析器的使用 【转】
- iphone几种XML解析器的介绍
- spring视图解析器XmlViewResolver的用法介绍.
- C语言实现的lisp解析器介绍
- 一、Pull解析器介绍
- html解析器JsoupXpath介绍
- Android的XML的解析方式介绍
- 常用的XML解析工具介绍
- C++虚析构函数的介绍与解析
- C#解析json以及简单的介绍
- ECMall的模板解析语法介绍
- Xml的概念及解析基础介绍
- iOS 数据解析 JSONModel的介绍
- nginx的location解析过程介绍
- freemaker介绍及常见的用法解析
- 为什么我现在加人和评论的权限都没有了呀。
- [转].net内存回收与Dispose﹐Close﹐Finalize方法
- monkeyrunner 录制脚本
- [shell]sed语法
- 线段树_POJ2528_解题报告
- 解析器的介绍
- android程序安装后图标不显示
- 十大免费防火墙大盘点
- [转]常见.Net 英文专业词汇
- Hibernate框架中如何将多对多映射转化为多对一映射
- 停下来是为了更好地出发
- 判断任一二叉树,是否为满二叉树.(输出二叉树,节点总数,二叉树深度)
- 动态建立和删除二维数组
- 常见计算机英文专业词汇