XML3

来源:互联网 发布:三星网络电视60寸价格 编辑:程序博客网 时间:2024/05/20 05:57
 

今天主要讲了XML解析主要有两种解析方式SAXDOM,今天只讲了DOM

1.  DOM特点:

     以树型结构访问XML文档。 一棵DOM树包含全部元素节点和文本节点。可以前后遍历树中的每一个节点。

     整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能。

     将整个文档调入内存(包括无用的节点),浪费时间和空间。

     一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)情况下使用。

2.      DOM树与节点

     XML文档被解析成树型结构。

     树由节点组成。共有12种不同的节点。

     节点可以包含其他节点(依赖于节点的类型)。

     父节点包含子节点。叶子节点没有子节点。

3.      节点类型

NODE

          该 Node 接口是整个文档对象模型的主要数据类型。它表示该文档树中的单个节点。当实现 Node 接口的所有对象公开处理子节点的方法时,不是实现Node 接口的所  有     对象都有子节点。例如,Text 节点可能没有子节点,且将子节点添加到这样的节点将导致引发DOMException。 包括属性nodeNamenodeValueattributes 作为一种获取节点信息的机制,无需向下强制转换为特定的派生接口。在没有对特定的nodeType(如 ElementnodeValueCommentattributes)的属性的明显映射的情况下,这将返回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)

SAXDOM在实现过程中,分别侧重于不同的方面以满足不同的应用需求。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那样的修改功能。

比较而言,DOMSAX各有自己的应用场合。DOM适用于处理下面的问题:解析比较小的XML文件;需要对文档进行修改;需要随机对文档进行访问。SAX适于处理下面的问题:对大型文档进行处理;只需要文档的部分内容;只需要从文档中得到特定信息。

原创粉丝点击