监理公司管理系统 | 工程企业管理系统 | OA系统 | ERP系统 | 造价咨询管理系统 | 工程设计管理系统 | 甲方项目管理系统 | 签约案例 | 客户案例 | 在线试用
X 关闭
鹰潭网站建设公司

当前位置:工程项目OA系统 > 泛普各地 > 江西OA系统 > 鹰潭OA > 鹰潭网站建设公司

PHP与XML联手进行网站编程

申请免费试用、咨询电话:400-8352-114

鹰潭网站建设 www.diyphp.net

一、弁言

  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的完毕标志时 *
*挪用,其效果是改动当时的条理 *
*计数,并在主标志下显示程度线 *
*********************************/

function stop_element($parser,$name)
{
 //变量$depth寄存标志的深度
 global $depth;
 $depth[$parser]--;
 //假如是主标志就显示赤色的程度线
 if($depth[$parser]==2)
 {
  echo "<hr color=red size=1>";
 }
}

/*********************************
*当PHP碰到一个XML的标志内容时 *
*挪用,其效果是依照必然的条理 *
*显示出标志的内容 *
*********************************/

function char_data($parser,$data)
{
 //变量$depth寄存标志的深度
 global $depth;
 //显示标志的内容
 $data=trim($data);
 if (strlen($data))
 {
  for ($i=1;$i<$depth[$parser]+6;$i++)
   echo " ";
   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,1))
{
 //报错
 die(sprintf("XML error: %s at line %d",
 xml_error_string(xml_get_error_code($parser)),
 xml_get_current_line_number($parser)));
}

// 释放解析器
xml_parser_free($parser);
?>

发布:2007-03-31 14:58    编辑:泛普软件 · xiaona    [打印此页]    [关闭]
鹰潭OA
联系方式

成都公司:成都市成华区建设南路160号1层9号

重庆公司:重庆市江北区红旗河沟华创商务大厦18楼

咨询:400-8352-114

加微信,免费获取试用系统

QQ在线咨询

泛普鹰潭网站建设公司其他应用

鹰潭软件开发公司 鹰潭门禁系统 鹰潭物业管理软件 鹰潭仓库管理软件 鹰潭餐饮管理软件 鹰潭网站建设公司