DOMXML: Expat之外的另一选择

原创 2004年10月18日 14:42:00
概述

  在网上有许多php的XML教程,但是只有少数介绍如何使用DOM来解析XML。我想利用这个机会展示一下在PHP编程中除了广泛使用的SAX实现方式外,还有另一种选择。

  DOM(Document Object Model,文档对象模型)和SAX(Simple API for XML,XML简单应用程序接口)在如何解析XML上有不同的方法。SAX引擎完全是事件驱动的。当它遇到一个标记时,它就调用一个适当的函数来处理它。这使得SAX非常快速和有效。然而他给你的感觉就象被套在一个没完没了的循环里面。你发现自己使用了太多的全局变量和条件语句。

  另一方面,DOM方法稍稍对内存有些敏感。它把整个XML文档以层次化的结构方式装载到内存里。这就是说,所有的数据组成了一个家族树,它们对编程者来说都是可用的。这种方法更直观,更容易使用,也提供了更多的可读性。

  为了使用DOM函数,你必需在配置PHP时,使用'--with-dom'参数。它们不是标准配置的组成部分,这里有一个简单的编译方式。

%> ./configure --with-dom --with-apache=../apache_1.3.12
%> make
%> make install

  译注:在Win32平台上支持DOM做法是这样的。首先,将下载包中dlls目录下的php_domXML.dll文件复制到系统目录下。NT、Win2K是system32目录,9X是system目录。其次,修改php.ini文件。将"Paths and Directories"中的extension_dir参数指向php_domXML.dll所在的路径,如extension_dir = C:/Winnt/system32;将"Dynamic Extensions"中extension=php_domXML.dll前的注释去掉。

  DOM如何构造XML

  因为DOM装载一个完整的字符串或文件到内存中作为一个树,这使我们可以将这些数据作为一个整体进行操作。我们拿这个XML文档作为一个例子。

<?XML version="1.0"?>

<book type="paperback">
<title>Red Nails</title>
<price>$12.99</price>
<author>
<name first="Robert" middle="E" last="Howard"/>
<birthdate>9/21/1977</birthdate>
</author>
</book>

  数据将象这样被组织起来

DomNode book
|
|-->DomNode title
| |
| |-->DomNode text
|
|-->DomNode price
| |
| |-->DomNode text
|
|-->DomNode author
|
|-->DomNode name
|
|-->DomNode birthdate
|
|-->DomNode text

  任何被标记封闭起来的文本都是它们自身的节点。举个例子来说,"Red Nails"是title的子节点,"$12.99"是price的子节点。


1 2 3  下一页

DOMXML: Expat之外的另一选择

  • zgqtxwd
  • zgqtxwd
  • 2008年05月01日 03:43
  • 64

Expat 源码在Windows+VS2013下编译

Expat是一个用C语言开发的、用来解析XML文档的开发库,它最初是开源的、Mozilla 项目下的一个XML解析器。 下载地址:https://sourceforge.net/projects/e...
  • u011417605
  • u011417605
  • 2016年11月17日 17:45
  • 938

嵌入式linux对xml文件的操作(expat篇)

前段时间在项目中用到了xml文件 目前的xml解析器一般有两种解析的形式.一种是DOM模型的,一种是SAX2模型的.DOM模型是讲xml文件中的结构解析成一棵树,然后再进行各种操作;而SAX2模型是...
  • flyer_dragon
  • flyer_dragon
  • 2014年07月11日 14:15
  • 1624

Linux XML expat 笔记

……
  • lovebzhou
  • lovebzhou
  • 2010年12月22日 16:51
  • 3701

安装DBus过程中发现Configure的expat缺失的处理办法

在解压的DBus目录下配置时,运行./configure中出现下面错误: could not find expat.h 解决方法: 运行 sudo apt-get install l...
  • lancanshire
  • lancanshire
  • 2014年07月15日 14:35
  • 576

Linux 下配置Expat解析XML

        qt中文论坛http://www.qtcn.org/bbs/ http://blog.chinaunix.net/u/7893/links_3024.html http://sourc...
  • javazat
  • javazat
  • 2008年11月14日 16:26
  • 6791

expat解析xml

expat用法 expat.h 五个回调函数 userdata都是自定义参数,一般应该用户传入上下文参数 //开始命名空间 static void XMLCALL startName...
  • woai110120130
  • woai110120130
  • 2016年12月11日 15:52
  • 685

关于开源的XML Parser expat的介绍和使用心得

expat是使用C所写的XML解释器,采用流的方式来解析XML文件,并且基于事件通知型来调用分析到的数据,并不需要把所有XML文件全部加载到内存里,这样可以分析非常大的XML文件。由于expat库是由...
  • ExclusivePig
  • ExclusivePig
  • 2009年09月18日 13:15
  • 3399

配置 Eclipse CDT + MSVC + CMake,VS之外的另一选择

一、安装 1. 安装Eclipse运行库:http://download.eclipse.org/eclipse/downloads,Build Type选Latest Release,打开Buil...
  • lionzl
  • lionzl
  • 2011年12月12日 22:02
  • 613

CentOS折腾第一天

今天折腾一天的CentOS 5.X,其最终目的就是想在命令下编程了。在这个操作系统编程,那总得有个环境吧,所以就各种搭建。下面来说我碰到的各种问题。(1)乱码  由于CentOS 默认情况下是不安装中...
  • mazhimazh
  • mazhimazh
  • 2014年12月20日 17:39
  • 1413
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DOMXML: Expat之外的另一选择
举报原因:
原因补充:

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