用PHP与XML联手进行网站编程代码实例


Posted in PHP onJuly 10, 2008

一、小序 

HTML简单易学又通用,一般的PHP程序就是嵌入在HTML语言之中实现的。但是随着WEB越来越广泛的应用,HTML的弱点也越来越明显了。XML的出现,弥补了这些不足,它提供了一个能够处理互联网上全部数据的通用方法。

二、HTML的局限性分析

1、 HTML的可扩展性差。虽然作为一般的应用,HTML应经够用了,但是在处理数学和化学等符号时,HTML有明显的缺点,而且它无法进行扩展,这样使它的发展收到了极大的限制。

2、 链路丢失后不能自动纠正。由于Web页面的URL地址经常改变,而在改变URL地址时必须手工修改这些信息,否则就会遇到“404URL地址未找到”的信息,这大大加重了Web页面的维护工作量。

3、 数据搜索的时间长。由于HTML主要用来对网页的显示进行控制,导致了同一个数据在不同的网页中有不同的存储格式,这样在进行数据搜索时就无法快速找到所需的资料。

4、 HTML对双字节或者多国文字的支持不够。例如中文信息页面在不同的平台下会出现无法显示等问题。

正是由于这些缺点,人们研究了能够代替HTML的Web页面制作语言。其中已经投入使用的有:可扩展标记语言XML、层叠样式表(CSS)以及动态HTML(DHTML)等。

三、XML的组成

这里简要列举几种主要的XML技术:

1、 DTD(文档类型声明)

DTD的主要功能是定义XML的内容模式;限制XML标记的数据范围;定义属性的数据类型。但由于它不是用XML编写的,因此扩展性比较差;而且只提供了有限的几种数据类型,因此它的作用是有限的。

2、 XML Schema

XML Schema的作用和DTD类似。但不同的是,Schema文件所描述的是引用它的XML文件中的元素和属性的具体类型。另外,由于它是由XML编写的,Schema和DTD相比较还有以下优点:

·XML Schema内容模型是开放的,可以随意扩充,而DTD无法解析扩充的内容。

·DTD只能把内容类型定义为一个字符串,而XML Schema允许把内容类型定义为整型、浮点型、布尔型或者许多其它的简单数据类型。

·XML Schema利用Namespaces将文档中特殊的节点与Schema相联系,一个XML文件可以有多个对应的Schema,而一个XML文件只能有一个DTD。

3、 XLink

作为一种Web语言,XML的链接能力是非常重要的。XML的链接和定址机制包括XLink、XPath和XPointer。XLink提供功能强大的链接方法,可以在文档之间建立单向或多向的复杂联结关系,还有注释链接、概要链接、扩展链接集等多种链接功能。XPath在XSLT和XPointer中使用,支持在XML文档中相对于节点和节点集的定位。XPointer在XPath的基础上提供对XML文档的内容的内部结构(如一个字符串或者选择的一个段落)的定位。XML的链接能力比HTML有了很大的增强。

4、 CSS与XSL

XML的一大特点就是内容与格式分离,也就是说,XML文档中并不包含如何显示/表示文档的信息。CSS与XSL(XML Style Language)解决了XML文档的显示问题。

CSS(层叠样式表)也可以用在HTML和XML中。XSL完全使用XML的语法,功能比CSS要强大得多。

5、 DOM

文档对象模型(DOM)是一个与平台、语言无关的程序接口,它提供了动态访问和更新文档的内容、结构与风格的手段。可以对文当作进一步的处理,并将处理的结果更新到表示页面。

DOM的目标就是为XML和HTML定义一个标准的编程接口,它包括核心、HTML和XML三部分。DOM的核心部分建立了一套底层的对象集,它们可以表示任何结构化的文档。HTML和XML提供了高层的接口,可以作为更方便的文档视图。DOM规范由对象和方法组成。程序员使用它们可以更容易地对特定类型的文档进行访问和操作。

6、 Namespaces

Namespaces是用URL加以区别的、在XML文件的元素和属性中出现的所有名称的集合。在XML中,用户可以自己定义标记和元素。因此,如果把多个XML文件合并为一个,就很可能出现冲突。Namespaces则解决了这个问题。

四、PHP对XML的支持

PHP对XML提供了的强大的支持。它使用了一个XML的“解析器”,并且为了支持这个解析器,它提供了20(PHP4)个XML的解析函数。下面是几个最常用的PHP解析函数。

1. xml_parse

boolean xml_parse(int parser, string data, int [isFinal]); 

本函数用来解析 XML 格式的文件资料。参数 parser 为解析代码。参数 data 为解析的资料区块 (chunk)。参数 isFinal 可省略,若设为 true 则系统会自动送出最后的资料部分 (piece) 给 data 参数。若无错误则返回 true 值。

2. xml_parser_create

int xml_parser_create(string [encoding]); 

本函数用来初始化一个新的 XML 解析器。参数 encoding 可省略,为 XML 使用的字符集,默认值为 ISO-8859-1,其它尚有 US-ASCII、UTF-8 二种。成功则返回 parser 代码供其它函数使用,失败则返回 false 值。

3. xml_set_element_handler

boolean xml_set_element_handler(int parser, string startElementHandler, string endElementHandler); 

本函数配置元素的标头供 xml_parse() 函数使用。参数 parser 为解析代码。参数 startElementHandler 及 endElementHandler 分别为元素开始与结束的标头,其中的 startElementHandler 必须包括解析代码、名称、与属性,而 endElementHandler 参数包括了解析代码及名称二个参数。若无错误则返回 true 值。

4. xml_set_character_data_handler

boolean xml_set_character_data_handler(int parser, string handler); 

本函数配置字符资料的标头。参数 parser 为解析代码。参数 handler 包括解析代码及资料字符串等二个元素。若无错误则返回 true 值。

5. xml_get_error_code

int xml_get_error_code(int parser); 

本函数可取得 XML 在处理时的错误代码。参数 parser 为解析代码。若 parser 有错则返回 false 值,否则就返回错误代码 (如 XML_ERROR_BINARY_ENTITY_REF .... 等等)。

6. xml_error_string

string xml_error_string(int code); 

本函数可取得 XML 在处理时的错误代码。参数 code 为解析错误代码。若无错误返回值为代码的文字描述字符串。

7. xml_get_current_line_number

int xml_get_current_line_number(int parser);   

本函数用来取得目前 XML 解析所正在处理的行号。参数 parser 为解析代码。若 parser 有错则返回 false 值,若无错误则返回行号数字。

8. xml_parser_free

boolean xml_parser_free(int parser); 

本函数用来释放目前 XML 解析所使用的内存。参数 parser 为解析代码。若没有错误则返回 true 值,否则返回 false 值。

PHP 相关文章推荐
APMServ使用说明
Oct 23 PHP
第七节--类的静态成员
Nov 16 PHP
ThinkPHP php 框架学习笔记
Oct 30 PHP
PHP开发者常犯的10个MySQL错误更正剖析
Jan 30 PHP
php小技巧之过滤ascii控制字符
May 14 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
Jul 08 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
使用PHPCMS搭建wap手机网站
Sep 20 PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 PHP
基于php实现七牛抓取远程图片
Dec 01 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
Jul 07 #PHP
PHP远程连接MYSQL数据库非常慢的解决方法
Jul 05 #PHP
[原创]效率较高的php下读取文本文件的代码
Jul 02 #PHP
php5中date()得出的时间为什么不是当前时间的解决方法
Jun 30 #PHP
用PHP程序实现支持页面后退的两种方法
Jun 30 #PHP
discuz Passport 通行证 整合笔记
Jun 30 #PHP
php下检测字符串是否是utf8编码的代码
Jun 28 #PHP
You might like
php XMLWriter类的简单示例代码(RSS输出)
2011/09/30 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
将Python中的数据存储到系统本地的简单方法
2015/04/11 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
2017/04/11 Python
Python判断两个对象相等的原理
2017/12/12 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
python 制作本地应用搜索工具
2021/02/27 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
HR喜欢的自荐信格式
2013/10/08 职场文书
护士辞职信范文
2014/01/19 职场文书
黄河的主人教学反思
2014/02/07 职场文书
表演方阵解说词
2014/02/08 职场文书
《识字五》教学反思
2014/03/01 职场文书
影视广告专业求职信
2014/09/02 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android