XML3
来源:互联网 发布:三星网络电视60寸价格 编辑:程序博客网 时间:2024/05/20 05:57
今天主要讲了XML解析主要有两种解析方式SAX和DOM,今天只讲了DOM
1. DOM特点:
以树型结构访问XML文档。 一棵DOM树包含全部元素节点和文本节点。可以前后遍历树中的每一个节点。
整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能。
将整个文档调入内存(包括无用的节点),浪费时间和空间。
一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)情况下使用。
2. DOM树与节点
XML文档被解析成树型结构。
树由节点组成。共有12种不同的节点。
节点可以包含其他节点(依赖于节点的类型)。
父节点包含子节点。叶子节点没有子节点。
3. 节点类型
NODE
该 Node
接口是整个文档对象模型的主要数据类型。它表示该文档树中的单个节点。当实现 Node
接口的所有对象公开处理子节点的方法时,不是实现Node
接口的所 有 对象都有子节点。例如,Text
节点可能没有子节点,且将子节点添加到这样的节点将导致引发DOMException
。 包括属性nodeName
、nodeValue
和 attributes
作为一种获取节点信息的机制,无需向下强制转换为特定的派生接口。在没有对特定的nodeType
(如 Element
的 nodeValue
或 Comment
的attributes
)的属性的明显映射的情况下,这将返回null
。注意,特定的接口可能包含其他更方便的机制来获取和设置相关信息。
Document node 包含:一个根Element节点。一个或多个处理指令节点。
Document Fragment node
Element node包含:其他Element节点。若干个Text节点。若干个Attribute节点。
Attribute node 包含:一个Text节点。
Text node
Comment node
Processing instruction node
Document type node
Entity node
Entity reference node
CDATA section node
Notation node
解析器向一个事件处理程序发送事件,比如元素开始和元素结束,而事件处理器则处理该信息。然后应用程序本身就能够处理该数据。原始的文档仍然保留完好无损。
比较:
DOM:
处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问
优点:1.提供随机定义元素操作,来回移动指针
2.将整个XML文件一次性加载到内存,形成虚的内存树
缺点:1.如果XML文件较大,内存空间占用较大
2.强制将较大的XML文件加载到内存中,有可能损害文件
3.功能通用性
SAX:
不同于DOM,SAX是事件驱动型的XML解析方式。它顺序逐行读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
在针对XML文档的应用编程接口中,最主要的有W3C制定的DOM(Document Object Method,文档对象模型)和由David Megginson领导的SAX(SimpleAPI for XML,用于XML的简单API)。
SAX和DOM在实现过程中,分别侧重于不同的方面以满足不同的应用需求。DOM为开发基于XML的应用系统提供了便利。它通过一种随机访问机制,使得应用程序利用该接口可以在任何时候访问XML文档中的任何一部分数据,也可以对XML文档中的数据进行插入、删除、修改、移动等操作。在DOM中,文档的逻辑结构类似一棵树。文档、文档中的根、元素、元素内容、属性、属性值等都是以对象模型的形式表示的。DOM的优点在于它在内存中保存文档的整个模型。这使得能以任何顺序访问XML元素。然而,对于大型文档来说,这样做可能不方便。因为它可能会用尽内存,或者当系统达到了它的极限时,机器的性能将
会慢下来。
SAX提供了一种对XML文档进行顺序访问的模式,这是一种快速读XML数据的方式。SAX接口是事件驱动的,当使用SAX分析器对XML文档进行分析时,就会触发一系列事件,并激活相应的事件处理函数,从而完成对XML文档的访问。SAX处理XML的方式与DOM不同。SAX解析器不是将DOM树解析和表现为输出,它是基于事件的,所以在XML被解析时,事件被发送给引擎。SAX可以在文档的开始接收事件,也可以接收文档中的元素。使用这些事件可以构建一种结构。因为SAX没有把XML文档完全地加载到内存中,所以需要的系统资源较少,是一个分析大型XML文档的高效API。缺点是编写SAX比编写DOM复杂,这因为首先必须实现通知接口并维护状态,其次SAX不允许对文档进行随机访问,也没有提供像DOM那样的修改功能。
比较而言,DOM和SAX各有自己的应用场合。DOM适用于处理下面的问题:解析比较小的XML文件;需要对文档进行修改;需要随机对文档进行访问。SAX适于处理下面的问题:对大型文档进行处理;只需要文档的部分内容;只需要从文档中得到特定信息。
- XML3
- XML3
- autocomplete-xml3
- string.xml3
- news_detail.xml3
- app_gallery_best.xml3
- javascript 操作XML3
- 第十三天(XML3)
- XSD验证XML3
- [C#]BinaryFormatter、SoapFormatter、XML3种序列化
- Spring XML3种创建bean的理解
- BinaryFormatter、SoapFormatter、XML3种序列化
- 【转帖】.net 2003 无法加载MS XML3.dll的解决方法
- r/WEB-INF/web.xml3字节的 UTF-8 序列的字节 3 无效
- 黑马程序员-基础知识学习总结
- unix 创建新的user
- 14.59 设置表格焦点 JTable.setFocusable
- frameset 空白,iframe 空白边的解决方法
- android app 内存使用
- XML3
- 找工作应该记住的话……
- 空白的博客
- 编写一个简单的linux内核模块
- Ubuntu Server 11.04上安装RedMine+Subversion
- Windows下SVN服务器的搭建
- 【生活】
- 出现javax.servlet.ServletException: BeanUtils.populate异常
- 创建list(列表)分区!