解析器的介绍

原创 2012年03月27日 09:28:07

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


SSM + Shiro 整合 (5)- 自定义过滤器及权限解析器、介绍权限匹配流程

关于 Shiro 的权限匹配器和过滤器上一节,我们实现了自定义的 Realm,方式是继承 AuthorizingRealm 这个抽象类,分别实现认证的方法和授权的方法。这一节实现的代码的执行顺序 1...

SpringMVC介绍之视图解析器ViewResolver

SpringMVC视图解析器 出处 http://haohaoxuexi.iteye.com/blog/1770554 前言    在前一篇博客中讲了SpringMVC的Controller控制...
  • lisaem
  • lisaem
  • 2016年07月26日 09:00
  • 1601

SpringMVC介绍之视图解析器ViewResolver

SpringMVC介绍之视图解析器ViewResolver 博客分类:  SpringMVC ViewResolverSpringMVC视图处理器视图处理器链ResourceBundleVi...

wireshark 与计算机网络额不得不说的秘密---->16位进制面板(解析器)的介绍

Wireshark简介 先简单说下,现代意义上网络的传输过程: 1.分层(这里介绍五层协议划分结构):从高层到底层分别是应用层->传输层->网络层->数据链路层->物理层,高层调用低层服务 2.物...

SpringMVC介绍之视图解析器ViewResolver

SpringMVC视图解析器 前言    在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下SpringMVC视图解析器。当我们对SpringMVC控...

(开发笔记)转载:SpringMVC介绍之视图解析器ViewResolver

转载自:http://haohaoxuexi.iteye.com/blog/1770554 SpringMVC视图解析器 前言    在前一篇博客中讲了SpringMVC的Contr...

wsdl2h解析器和soapcpp2编译器选项介绍

文章来源:http://blog.csdn.net/ocean2006/article/details/5490928 1、wsdl2h(利用wsdl文件生成对应的h文件)用法 **  The g...
  • daiafei
  • daiafei
  • 2013年09月05日 09:40
  • 1369

SpringMVC介绍之视图解析器ViewResolver

前言    当我们对SpringMVC控制的资源发起请求时,这些请求都会被SpringMVC的DispatcherServlet处理,接着Spring会分析看哪一个HandlerMapping定义的所...

SpringMVC介绍之视图解析器ViewResolver

SpringMVC介绍之视图解析器ViewResolver 前言    在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下Spring...

springmvc 视图和视图解析器相关类介绍

springmvc 通过@RequestMapping路由的方法进行业务处理之后,会有返回值,返回值经过视图解析器解析之后,生成一个view,然后再由view进行渲染成具体的jsp页面,excel,p...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解析器的介绍
举报原因:
原因补充:

(最多只允许输入30个字)