文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程PHPphp的xml分析函数
精品推荐
特别推荐
·菜鸟学PHP之Smarty入门
·PHP环境安全配置教程
·PHP入门指导:如何学习PHP?
·Php+Mysql注入专题
·PHP:实现给上传图片加水印的程序代码
·PHP动态网站开发中常用的8个小技巧
·PHP初学者:配置Apache服务器并且设置DNS
·初学PHP指导:php.ini 配置详细选项
·好文分享:PHP入门的学习方法
·急速搭建属于自己的Discuz!6论坛
·PHP入门:初学来看配置文件PHP.INI的中文注释
·php.ini配置,php.ini 中的 php-5.2.0 配置指令详解
·总结:一些PHP学习过程中的心得和经验
·新手入门:JSP初学者必须掌握的语法点
·PHP技巧:PHP脚本编程中的文件系统函数库
·详细讲解PHP编程中分页显示的制作
·成为PHP编程高手应该遵循的三个准则
·谈谈生成静态页面的一些经验
·新手入门:详细解述七个软件开发的原则
·简单的webservice开发例子
热点TOP10
·一个Struts实现分页,增删改查,Tiles,国际化的DEMO
·Windows XP下PHP+MySQL环境搭建
·JDBC连接Oracle数据库常见问题及解决方法
·简单的webservice开发例子
·MyEclipse+struts+Hibernate配置开发
·Php+Mysql注入专题
·菜鸟学PHP之Smarty入门
·php:树形结构的算法
·彻底解决中文名文件下载和下载文件内容乱码问题
·PHP 会话 (Session) 使用入门
·跟我来学PHP5:session会话的使用和分析
·急速搭建属于自己的Discuz!6论坛
·解决tomcat频繁死掉的问题
·学习教程:Java Annotation 高级应用
·表单验证类 Validator for PHP
·解密ZEND加密后的PHP
·用PHP模拟登陆
·用PHP实现多级树型菜单
·动态网页制作学习:PHP预定义变量
·PHP+Access设计留言版实战

php的xml分析函数

日期:2007年8月20日 作者: 查看:[大字体 中字体 小字体]


首先我得承认我喜欢计算机标准。如果每个人都遵从这个行业的标准,互联网将会是一个更好的媒体。使用标准化的数据交换格式才能使开放的和独立于平台的计算模式切实可行。这就是我作为XML爱好者的原因。

幸运的是,我最喜爱的脚本语言不但支持XML而且对其支持正不断加强。PHP可以让我迅速将XML文档发布到互联网上,收集XML文档的统计信息,将XML文档转换成其它格式。例如,我时常用PHP的XML处理能力来管理我用XML所写的文章和书。

本文中,我将讨论任何用PHP内建的Expat解析器来处理XML文档。通过范例,我将演示Expat的处理方法。同时,范例可以告诉你如何:

建立你自己的处理函数 
将XML文档转换成你自己的PHP数据结构

介绍Expat

XML的解析器,同样称为XML处理器,可以使程序访问XML文档的结构和内容。Expat是PHP脚本语言的XML解析器。它同时也运用在其它项目中,例如Mozilla、Apache和Perl。

什么是基于事件的解析器?

XML解析器的两种基本类型:

基于树型的解析器:将XML文档转换成树型结构。这类解析器分析整篇文章,同时提供一个API来访问所产生树的每个元素。其通用的标准为DOM(文档对象模式)。 
基于事件的解析器:将XML文档视为一系列的事件。当一个特殊事件发生时,解析器将调用开发者提供的函数来处理。 
基 于事件的解析器有一个XML文档的数据集中视图,也就是说它集中在XML文档的数据部分,而不是其结构。这些解析器从头到尾处理文档,并将类似于-元素的 开始、元素的结尾、特征数据的开始等等-事件通过回调(callback)函数报告给应用程序。以下是一个"Hello-World"的XML文档范例:

<greeting> 
Hello World 
</greeting> 

基于事件的解析器将报告为三个事件:

开始元素:greeting 
CDATA项的开始,值为:Hello World 
结束元素:greeting 
不像基于树型的解析器,基于事件的解析器不产生描述文档的结构。在CDATA项中,基于事件的解析器不会让你得到父元素greeting的信息。
然而,它提供一个更底层的访问,这就使得可以更好地利用资源和更快地访问。通过这种方式,就没有必要将整个文档放入内存;而事实上,整个文档甚至可以大于实际内存值。

Expat就是这样的一种基于事件的解析器。当然如果使用Expat,必要时它一样可以在PHP中生成完全的原生树结构。

上面Hello-World的范例包括完整的XML格式。但它是无效的,因为既没有DTD(文档类型定义)与其联系,也没有内嵌DTD。

对于Expat,这并没有区别:Expat是一个不检查有效性的解析器,因此忽略任何与文档联系的DTD。但应注意的是文档仍然需要完整的格式,否则Expat(和其他符合XML标准的解析器一样)将会随着出错信息而停止。

作为不检查有效性的解析器,Exapt的快速性和轻巧性使其十分适合互联网程序。

编译Expat

Expat可以编译进PHP3.0.6版本(或以上)中。从Apache1.3.9开始,Expat已经作为Apache的一部分。在Unix系统中,通过-with-xml选项配置PHP,你可以将其编译入PHP。

如果你将PHP编译为Apache的模块,而Expat将默认作为Apache的一部分。在Windows中,你则必须要加载XML动态连接库。

XML范例:XMLstats

了解Expat的函数的一个办法就是通过范例。我们所要讨论的范例是使用Expat来收集XML文档的统计数据。

对于文档中每个元素,以下信息都将被输出:

该元素在文档中使用的次数 
该元素中字符数据的数量 
元素的父元素 
元素的子元素 
注意:为了演示,我们利用PHP来产生一个结构来保存元素的父元素和子元素

准备

用 于产生XML解析器实例的函数为xml_parser_create()。该实例将用于以后的所有函数。这个思路非常类似于PHP中MySQL函数的连接 标记。在解析文档前,基于事件的解析器通常要求你注册回调函数-用于特定的事件发生时调用。Expat没有例外事件,它定义了如下七个可能事件:

对象 XML解析函数 描述

元素 xml_set_element_handler() 元素的开始和结束

字符数据 xml_set_character_data_handler() 字符数据的开始

外部实体 xml_set_external_entity_ref_handler() 外部实体出现

未解析外部实体 xml_set_unparsed_entity_decl_handler() 未解析的外部实体出现

处理指令 xml_set_processing_instruction_handler() 处理指令的出现

记法声明 xml_set_notation_decl_handler() 记法声明的出现

默认 xml_set_default_handler() 其它没有指定处理函数的事件

所有的回调函数必须将解析器的实例作为其第一个参数(此外还有其它参数)。

对于本文最后的范例脚本。你需要注意的是它既用到了元素处理函数又用到了字符数据处理函数。元素的回调处理函数通过xml_set_element_handler()来注册。

这个函数需要三个参数:

解析器的实例 

[1] [2] [3] [4] [5] 下一页 




上一篇:sql server数据库备份有两种方式

下一篇:严防个人信息泄漏QQ密码

php的xml分析函数 相关文章:
·校园网网络方案设计及分析
·C语言图形函数
·C语言的常用库函数使用方法分析及用途
·巧用Excel函数来实现工作表间的数据关联
·静态分析技术-IDA Pro简介
·用正则表达式函数验证身份证号码合法性
·文晟扫描5. 0 之破解经过 算法分析
·BT下载速度变慢原因解读及应对方法分析
·asp.net中调用javascript函数实现多功能日期控件示例
·性能分析工具的使用
php的xml分析函数 相关软件:
·C语言库函数速查
·C函数浏览
·3D 动画与建模:人体的综合与分析技术
·Excel2003函数应用完全手册
·同花顺TopView(赢富)深度决策证券行情分析软件(T+1)体验版 V7.40.72
·系统分析师考试培训视频教程9
·赢家-江恩证券分析系统 V6.22 未来先知版
·《股票常识与技术分析》
·赢证股市分析软件4.0免安装
·双色球大赢家 专业彩票分析软件 V3.05 正式版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot