PHP XML Expat 解析器_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP XML Expat 解析器

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:解析函数事件parser
黑客防线网安网讯:  什么是Expat?    如需读取和更新-创建创建并处理-一个XML文档,您需要XML解析器。    有两种基本的XML解析器类型:    基于树的解析器:这种解析器把XML文档转换为树型结构...
  什么是Expat?
  
  如需读取和更新-创建创建并处理-一个XML文档您需要XML解析器
  
  有两种基本的XML解析器类型:
  
  基于树的解析器:这种解析器把XML文档转换为树型结构它分析整篇文档并提供了API来访问树种的元素,例如文档对象模型(DOM)。
  
  基于事件的解析器:将XML文档视为一系列的事件。当某个具体的事件发生时,解析器会调用函数来处理。
  
  Expat解析器是基于事件的解析器。
  
  基于事件的解析器集中在XML文档的内容,而不是它们的结果。正因如此,基于事件的解析器能够比基于树的解析器更快地访问数据。
  
  请看下面的XML片段:
  
  <from>John</from>基于事件的解析器把上面的XML报告为一连串的三个事件:
  
  开始元素:from
  
  开始CDATA部分,值:John
  
  关闭元素:from
  
  上面的XML范例包含了形式良好的XML。不过这个例子是无效的XML,因为没有与它关联的文档类型声明(DTD),也没有内嵌的DTD。
  
  不过,在使用Expat解析器时,这没有区别。Expat是不检查有效性的解析器,忽略任何DTD。
  
  作为一款基于事件、非验证的XML解析器,Expat快速且轻巧,十分适合PHP的web应用程序。
  
  注释:XML文档必须形式良好,否则Expat会生成错误。
  
  安装
  
  XMLExpat解析器是PHP核心的组成部分。无需安装就可以使用这些函数。
  
  XML文件
  
  将在我们的例子中使用下面的XML文件:
  
  <?xmlversion="1.0"encoding="ISO-8859-1"?>
  
  <note>
  
  <to>George</to>
  
  <from>John</from>
  
  <heading>Reminder</heading>
  
  <body>Don'tforgetthemeeting!</body>
  
  </note>初始化XML解析器
  
  我们要在PHP中初始化XML解析器,为不同的XML事件定义处理器,然后解析这个XML文件。
  
  例子
  
  <?php
  
  //InitializetheXMLparser
  
  $parser=xml_parser_create();
  
  //Functiontouseatthestartofanelement
  
  functionstart($parser,$element_name,$element_attrs)
  
  {
  
  switch($element_name)
  
  {
  
  case"NOTE":
  
  echo"--Note--<br/>";
  
  break;
  
  case"TO":
  
  echo"To:";
  
  break;
  
  case"FROM":
  
  echo"From:";
  
  break;
  
  case"HEADING":
  
  echo"Heading:";
  
  break;
  
  case"BODY":
  
  echo"Message:";
  
  }
  
  }
  
  //Functiontouseattheendofanelement
  
  functionstop($parser,$element_name)
  
  {
  
  echo"<br/>";
  
  }
  
  //Functiontousewhenfindingcharacterdata
  
  functionchar($parser,$data)
  
  {
  
  echo$data;
  
  }
  
  //Specifyelementhandler
  
  xml_set_element_handler($parser,"start","stop");
  
  //Specifydatahandler
  
  xml_set_character_data_handler($parser,"char");
  
  //OpenXMLfile
  
  $fp=fopen("test.xml","r");
  
  //Readdata
  
  while($data=fread($fp,4096))
  
  {
  
  xml_parse($parser,$data,feof($fp))or
  
  die(sprintf("XMLError:%satline%d",
  
  xml_error_string(xml_get_error_code($parser)),
  
  xml_get_current_line_number($parser)));
  
  }
  
  //FreetheXMLparser
  
  xml_parser_free($parser);
  
  ?>以上代码的输出:
  
  --Note--
  
  To:George
  
  From:John
  
  Heading:Reminder
  
  Message:Don'tforgetthemeeting!
  
  工作原理解释:
  
  通过xml_parser_create()函数初始化XML解析器
  
  创建配合不同事件处理程序的的函数
  
  添加xml_set_element_handler()函数来定义,当解析器遇到开始和结束标签时执行哪个函数
  
  添加xml_set_character_data_handler()函数来定义,当解析器遇到字符数据时执行哪个函数
  
  通过xml_parse()函数来解析文件"test.xml"
  
  万一有错误的话,添加xml_error_string()函数把XML错误转换为文本说明
  
  调用xml_parser_free()函数来释放分配给xml_parser_create()函数的内存
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17523-1.html
网站维护教程更新时间:2012-09-21 05:20:30  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer