DOMXML: Expat之外的另一选择

2016-01-29 13:31 6 1 收藏

DOMXML: Expat之外的另一选择,DOMXML: Expat之外的另一选择

【 tulaoshi.com - PHP 】

概述

  在网上有许多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:Winntsystem32;将"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的子节点。
 在DOM中使用的对象

  你可能会觉得困惑,什么是一个DomNode。我们从这里开始讨论包含在DOM模型中的对象。DOM定义了五种对象:DomDocument, DomNode, DomAttribute, DomDtd, 和 DomNamespace。我们将把主要注意力集中在DomDocument和DomNode对象,因为他们是最常用的。

  Node对象

  下面是一个DomNode对象所包含内容的概览。

class DomNode
 properties:
  name
  content
  type
 methods:
  lastchild()
  children()
  parent()
  new_child( $name,$content )
  getattr( $name )
  setattr( $name,$value )
  attributes()
  properties需要一些详细的说明。

  name 属性实际上是节点标记的名称。一个引用title标记的节点可能就是用'title'作为节点名。

  content 属性通常是空的。然而文本型节点使用这个属性来保存文本。

  type 属性是个常数,它明确定义了这个节点是什么类型的对象。有一些DomNode对象的类型。这些类型常数的列表可以从http://www.php.net/manual/ref.domXML.php在线获得。例如,一个包含文本内容的节点就可能有一个XML_TEXT_NODE的类型。

  methods也需要解释一下。

来源:https://www.tulaoshi.com/n/20160129/1490487.html

延伸阅读
标签: 办公软件
 要将插入Word2000/XP文档中的图片另外保存起来,相信多数朋友采用的是将该文档另存为Web页的方法,但如果文档中的图片很多,而我们又只需要保存其中一幅的话,这种方法就不太适合了。其实Word2000/XP中提供了一个专门用于图片处理的工具——Microsoft Photo Editor,借助这个工具我们可以轻松地将插入Word文档中的图片单独保存,并可指定...
提起中药降压,大多数人的第一反应就是罗布麻,市面上也有很多以罗布麻为主的降压复合制剂,然而,罗布麻有小毒,不宜久服或大剂量服用。在这里我们介绍另一种具有良好降压作用的中药——夏枯草。 夏枯草几乎全国可见,主产于华东华南地区,性苦辛而寒,入肝、胆经,能清肝明目,消肿散结。《本草求真》:“夏枯草,辛苦微寒……凡结...
标签: 营养价值
肥牛,不是牛的品种,也不是牛的哪一个部位,更不是肥的牛,而是经过排酸处理后切成薄片在火锅内涮食的一种食材。肥牛营养丰富,含有丰富的蛋白质,铁,锌,钙还有每天需要的维生素B群, 包括叶酸,维生素B和核黄素等。下面图老师小编就为大家介绍几款肥牛的美味食谱吧。 酸辣肥牛粉 材料 粉丝,油菜,蒜苗,香葱,...
标签: PHP
  前一段时间我接触到DEC Tru64 Unix 我在上面装了PHP+APACHE,可以用提供的mail函数始终不能正常发信,于是自编了一个函数,它利用UNIX下的管道和PHP的SOCK函数进行发信,经过实验非常驻成功,下面是此函数原代码。 function mymail($mto,$mcc,$msubject,$mbody) {   $from="webmaster@backhome.com.cn"; $sign =...
《极度恐慌3》通关存档~可选择全部关卡和另一个主角 会员:yuileung 分享 我用的是的破解,其他破解应该也能用,只是存放存档的位置会有些不同,请自行研究。 首先找到以下文件夹:(没有的话请先打上破解后至少运行一次游戏) C:\Documents and Settings\你的windows用户名\Local Settings\Application Data\ALI213\21100 (1)里面有个...

经验教程

307

收藏

96
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部