DOM & SAX

     XML文档进行解析和数据提取,目前有两大主流技术:DOMDocument Object Model)和SAXSimple API for XML)。

 

()DOM

DOM可以看作一组API,它把HTML文档、XML文档等看成是一个文档对象,在接口里面存放的是对这些文档操作的属性和方法的定义。若编程语言实现了这些属性和方法,就可以对文档对象中的数据进行存取,并且利用程序对数据做进一步处理。DOM规范的核心是树模型,对于要解析的XML文档,首先利用DOM解析器加载到内存中,在内存中为XML文件建立逻辑形式的树。

根据 DOMXML 文档中的每个成分都是一个节点。DOM 是这样规定的:

& 整个文档是一个文档节点(document

& 每个 XML 标签是一个元素节点(element)

& 包含在 XML 元素中的文本是文本节点(Text)

& 每一个 XML 属性是一个属性节点(attribute)

& 注释属于注释节点(notation)

另外在 DOM 处理中一个普遍的错误是,认为元素节点包含文本。其实元素节点的文本是存储在文本节点中的。在这个例子中:<year>2005</year>,元素节点 <year>,拥有一个值为 "2005" 的文本节点。"2005" 不是 <year> 元素的值。

利用DOM进行解析,掌握:树型结构的思想,上述结点类型(nodetype),辅之以接口中的属性方法,一切就easy了。下面使用DOMbook.xml进行遍历解析:

 

(二)SAX

SAX不是W3C官方标准,但应用的丝毫不比DOM少。它有两个主要特点:1)在处理DOM的时候需要将整个XML文档加载到内存,不适合处理大文档。而SAX是一种轻量型方法,可以解析任意大小的文件。2SAX以流的方式读取XML文件到内存,是事件驱动的。文档的读入过程就是SAX的解析过程。

SAX的核心是事件处理机制。当用SAX把一个要解析的XML文件调入内存时,需要对该XML文件读取,当读到一个开始标记时,就会触发一个事件,并调用与该事件相应的方法来处理这个事件。解析器遇到XML文件的开始标记、空白字符、结束标记、标记内容等都会触发相应的事件。

同样遍历book.xml:

 

     SAX只是顺序检查XML文档中的字节流,并触发相应事件。而对于事件处理函数本身,则要应用程序自己实现。但是对于只需要访问数据的应用来说,SAX效率是更高的。一般可以将DOMSAX优势结合使用,用SAX获取相应数据,用DOM根据新的需要形成一个XML文件。

 

   运行结果:

 

The Topic is :书库

 

种类--历史
标题:上下五千年
作者:王强
出版日期:2005
价格:30.00元

 

种类--小说
标题:中国,你好
作者:孙静
出版日期:2005
价格:29.99元

 

种类--计算机
标题:如何成为一个程序员
作者:姜俊杰
出版日期:2006
价格:49.99元

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章