php的XML文件解释类应用实例


Posted in PHP onSeptember 22, 2014

本文实例讲述了php的XML文件解释类及其用法,是非常实用的技巧。分享给大家供大家参考。具体如下:

XMLParser.class.php类文件如下:

<?php 
/** XML 文件分析类 
*  Date:  2013-02-01 
*  Author: fdipzone 
*  Ver:  1.0 
* 
*  func: 
*  loadXmlFile($xmlfile)   读入xml文件输出Array 
*  loadXmlString($xmlstring) 读入xmlstring 输出Array 
*/ 
 
class XMLParser{ 
 
  /** 读取xml文件 
  * @param String $xmlfile 
  * @return Array 
  */ 
  public function loadXmlFile($xmlfile){ 
    // get xmlfile content 
    $xmlstring = file_exists($xmlfile)? file_get_contents($xmlfile) : ''; 
    // parser xml 
    list($flag, $data) = $this->parser($xmlstring); 
    return $this->response($flag, $data); 
  } 
 
  /** 读取xmlstring 
  * @param String $xmlstring 
  * @return Array 
  */ 
  public function loadXmlString($xmlstring){ 
    // parser xml 
    list($flag, $data) = $this->parser($xmlstring); 
    return $this->response($flag, $data); 
  } 
 
  /** 解释xml内容 
  * @param  String $xmlstring 
  * @return Array 
  */ 
  private function parser($xmlstring){ 
    $flag = false; 
    $data = array(); 
    // check xml format 
    if($this->checkXmlFormat($xmlstring)){ 
      $flag = true; 
      // xml to object 
      $data = simpleXML_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA); 
      // object to array 
      $this->objectToArray($data); 
    } 
    return array($flag, $data); 
  } 
 
  /** 检查xml格式是否正确 
  * @param String $xmlstring 
  * @return boolean 
  */ 
  private function checkXmlFormat($xmlstring){ 
    if($xmlstring==''){ 
      return false; 
    } 
    $xml_parser_obj = xml_parser_create(); 
 
    if(xml_parse_into_struct($xml_parser_obj, $xmlstring, $vals, $indexs)===1){ // 1:success 0:fail 
      return true; 
    }else{ 
      return false; 
    } 
  } 
 
  /** object 转 Array 
  * @param object $object 
  * @return Array 
  */ 
  private function objectToArray(&$object){ 
     
    $object = (array)$object; 
     
    foreach($object as $key => $value){ 
      if($value==''){ 
        $object[$key] = ""; 
      }else{ 
        if(is_object($value) || is_array($value)){ 
          $this->objectToArray($value); 
          $object[$key] = $value; 
        } 
      } 
    } 
  } 
 
  /** 输出返回 
  * @param boolean $flag true:false 
  * @param Array  $data 转换后的数据 
  * @return Array 
  */ 
  private function response($flag=false, $data=array()){ 
    return array($flag, $data); 
  } 
} 
?>

Demo示例程序如下:

<?php 
require "XMLParser.class.php"; 
 
$xmlfile = 'file.xml'; 
$xmlstring = '<?xml version="1.0" encoding="utf-8"?> 
<xmlroot> 
<status>1000</status> 
<info></info> 
<result><id>100</id> 
<name>fdipzone</name> 
<gender>1</gender> 
<age>28</age> 
</result> 
</xmlroot>'; 
echo '<pre>'; 
$xml_parser = new XMLParser(); 
echo "response xmlfile\r\n"; 
list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile); 
if($flag){ 
  print_r($xmldata); 
} 
echo "response xmlstring\r\n"; 
list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring); 
if($flag){ 
  print_r($xmldata); 
} 
echo '</pre>'; 
?>

关于PHP的XML预定义常量可参考官方文档:
http://www.php.net/manual/en/libxml.constants.php

希望本文所述对大家PHP程序设计的学习有所帮助。

PHP 相关文章推荐
php一句话cmdshell新型 (非一句话木马)
Apr 18 PHP
Apache中php.ini的设置方法
Feb 28 PHP
php缓冲 output_buffering的使用详解
Jun 13 PHP
CI框架中zip类应用示例
Jun 17 PHP
ThinkPHP CURD方法之table方法详解
Jun 18 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
Jun 30 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
php文件上传类的分享
Jul 06 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
php成功操作redis cluster集群的实例教程
Jan 13 PHP
详解PHP神奇又有用的Trait
Mar 25 PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 PHP
php实现的返回数据格式化类实例
Sep 22 #PHP
php实现的替换敏感字符串类实例
Sep 22 #PHP
php实现的发送带附件邮件类实例
Sep 22 #PHP
PHP实现AES256加密算法实例
Sep 22 #PHP
php生成QRcode实例
Sep 22 #PHP
php实现的Captcha验证码类实例
Sep 22 #PHP
php中unserialize返回false的解决方法
Sep 22 #PHP
You might like
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
2018/03/22 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
采用怎样的方法保证数据的完整性
2013/12/02 面试题
受欢迎的大学生自我评价
2013/12/05 职场文书
运动会广播稿30字
2014/01/21 职场文书
法院信息化建设方案
2014/05/21 职场文书
校园文明标语
2014/06/13 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
装配出错检讨书
2014/09/23 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
总结会主持词
2015/07/02 职场文书
个人欠条范本
2015/07/03 职场文书
Go语言基础知识点介绍
2021/07/04 Golang