知识大全 用PHP与XML联手进行网站编程

Posted 函数

篇首语:男儿欲遂平生志,五经勤向窗前读。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用PHP与XML联手进行网站编程相关的知识,希望对你有一定的参考价值。

用PHP与XML联手进行网站编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一 小序  

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

  二 HTML的局限性分析

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

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

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

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

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

  三 XML的组成

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

   DTD(文档类型声明)

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

   XML Schema

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

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

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

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

   XLink

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

   CSS与XSL

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

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

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

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

   Namespaces

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

  四 PHP对XML的支持

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

   xml_parse

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

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

   xml_parser_create

  int xml_parser_create(string [encoding]);

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

   xml_set_element_handler

  boolean xml_set_element_handler(int parser string startElementHandler string endElementHandler)  

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

   xml_set_character_data_handler 

  boolean xml_set_character_data_handler(int parser string handler);

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

   xml_get_error_code

  int xml_get_error_code(int parser);

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

   xml_error_string

  string xml_error_string(int code);

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

   xml_get_current_line_number

  int xml_get_current_line_number(int parser);  

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

   xml_parser_free

  boolean xml_parser_free(int parser);

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

  五 案例解析

  以下是用PHP 实现读取一个以XML 格式编写的通讯录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= ;$i<$depth[$parser];$i++)     $spacer =" >";    //设置标记显示时的颜色  if($depth[$parser]== )     $font_color="red";    else   if($depth[$parser]== )       $font_color="green";     else     $font_color="blue";    //设置标记显示时的字体  $font_size= $depth[$parser];  if ($font_size< )     $font_size= ;    //显示标记  echo "<font size=" $font_size " color=" $font_color ">";  echo $spacer $depth[$parser];  if ($depth[$parser]<> )     echo " ";    echo $name "<BR>";  echo "</font>";  $depth[$parser]++;  //如果是主标记就显示红色的水平线  if($depth[$parser]== )     echo "<hr color=red size= >";  

  /********************************* *当PHP遇到一个XML的结束标记时 * *调用 其作用是改变当前的层次 * *计数 并在主标记下显示水平线 * *********************************/

  function stop_element($parser $name)  //变量$depth存放标记的深度  global $depth;  $depth[$parser] ;  //如果是主标记就显示红色的水平线  if($depth[$parser]== )     echo "<hr color=red size= >";  

  /********************************* *当PHP遇到一个XML的标记内容时 * *调用 其作用是按照一定的层次 * *显示出标记的内容 * *********************************

  function char_data($parser $data)  //变量$depth存放标记的深度  global $depth;  //显示标记的内容  $data=trim($data);  if (strlen($data))     for ($i= ;$i<$depth[$parser]+ ;$i++)    echo "&nbsp";    echo "<b>$data</b><br> ";  

  // //第二部分 PHP文件开始执行处 // //要解析的XML文件的名字

  $file="address xml"; //读取文件 $data=read_file($file);

  // 产生解析器的实例 $parser = xml_parser_create(); // 设置处理函数 xml_set_element_handler($parser "start_element" "stop_element"); xml_set_character_data_handler($parser "char_data"); // 解析文件 if(!xml_parse($parser $data ))  //报错  die(sPRintf("XML error: %s at line %d"  xml_error_string(xml_get_error_code($parser))  xml_get_current_line_number($parser)));

cha138/Article/program/PHP/201311/21339

相关参考

知识大全 用PHP与XML联手进行网站编程[2]

用PHP与XML联手进行网站编程[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  五案例解析

知识大全 平时我们所见的网站中,php用于哪部分编程,可以举一个例子介绍下吗

平时我们所见的网站中,php用于哪部分编程,可以举一个例子介绍下吗?facebook主要用php来传送数据,在后台与前台之间起连接作用(facebook后台用c语言),其实各大网站都差不多,真正高并发

知识大全 网站建设中PHP的编程8种常见文件操作

网站建设中PHP的编程8种常见文件操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  文件和目录

知识大全 用MySQL和PHP创建XML

用MySQL和PHP创建XML  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  XML是作为数据交

知识大全 用PHP工具包expat解析XML

用PHP工具包expat解析XML  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如今人人鼓吹XML

知识大全 怎么用php解析xml文件

  DOMElement  DOMElementDOMDocument::createElement(string$name[string$value])  创建节点元素  String$name节点

知识大全 使用 XML Web services 进行 Web 编程

使用XMLWebservices进行Web编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  X

知识大全 使用PHP 5.0 轻松解析XML文档(1)

使用PHP5.0轻松解析XML文档(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用sax

知识大全 做旅游网站用PHP语言程序好还是用ASP的好

做旅游网站用PHP语言程序好还是用ASP的好  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!做旅游网站

知识大全 掌握XML实例演练ASP+XML编程

掌握XML实例演练ASP+XML编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作为一个普通