0

0

用PHP与XML进行网站编程_PHP教程

php中文网

php中文网

发布时间:2016-07-13 10:38:26

|

1225人浏览过

|

来源于php中文网

原创

一、小序
  
  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 值。
  
  五、案例解析
  
  以下是用php5实现读取一个以xml 1.0格式编写的通讯录address.xml,并显示其内容的示例。详解见有关注释。
  
  <?
  //
  //第一部分:几个php helper函数
  //
  
  /**********************************
  
  *从一个文件中读取xml的 *
  *内容到字符串中 *
  
  *********************************/
  
  function read_file($filename)
  {
  //读取文件
  $lines=file($filename);
  //变量$contents是存放文件内容的变量
  $contents="";
  while(list($key,$value)=each($lines))
  {
  $contents.=$value;
  }
  return $contents;
  }
  
  /*********************************
  *当php遇到一个xml的起始标记时 *
  *调用,其作用是按照一定的层次 *
  *显示出xml的标记 *
  *********************************/
  
  function start_element($parser, $name, $attrs)
  {
  //变量$depth存放标记的深度
  global $depth;
  //变量$spacer存放标记前所有的箭头符号
  $spacer="";
  for ($i=1;$i<$depth[$parser];$i++)
  {
  $spacer.="->";
  }
  //设置标记显示时的颜色
  if($depth[$parser]==0)
  {
  $font_color="red";
  }
  else
  if($depth[$parser]==1)
  {
  $font_color="green";
  }
  else
  {
  $font_color="blue";
  }
  //设置标记显示时的字体
  $font_size=5-$depth[$parser];
  if ($font_size<2)
  {
  $font_size=2;
  }
  //显示标记
  echo "<font size=".$font_size." color=".$font_color.">";
  echo $spacer.$depth[$parser];
  if ($depth[$parser]<>0)
  {
  echo "、";
  }
  echo $name."<br>";
  echo "</font>";
  $depth[$parser]++;
  //如果是主标记就显示红色的水平线
  if($depth[$parser]==2)
  {
  echo "<hr color=red size=1>";
  }
  }
  
  /*********************************
  *当php遇到一个xml的结束标记时 *
  *调用,其作用是改变当前的层次 *
  *计数,并在主标记下显示水平线 *

恒浪威购商城
恒浪威购商城

基于asp.net2.0框架技术与企业级分布式框架以及与 ms sql server 2000数据库无缝集合而成,并且融合当前流行的ajax技术进行编写的电子商务系统,她整合了多用户商城、单用户商城功能和恒浪网站整合管理系统,吸收绝大部分同类产品的精华和优点,独创网络团购(b2t)电子商务模式,流程化的团购功能和视频导购等功能,是一款极具商业价值的电子商务系统。商城前台功能概述:商城会员可前台自行

下载

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/735106.htmlTechArticle一、小序 HTML简单易学又通用,一般的PHP程序就是嵌入在HTML语言之中实现的。但是随着WEB越来越广泛的应用,HTML的弱点也越来越明显了。...

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

194

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

91

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

54

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

598

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

56

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 11.6万人学习

CSS3 教程
CSS3 教程

共18课时 | 5.8万人学习

Git 教程
Git 教程

共21课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号