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 反向排序和随机排序代码
Jun 30 PHP
简单的PHP缓存设计实现代码
Sep 30 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
Mar 07 PHP
Laravel实现自定义错误输出内容的方法
Oct 10 PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 PHP
在IIS下安装PHP扩展的方法(超简单)
Apr 10 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
May 23 PHP
基于PHP实现用户在线状态检测
Nov 10 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伪静态页面函数附使用方法
2008/06/20 PHP
PHP 面向对象 final类与final方法
2010/05/05 PHP
PHP持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
PHP 第二节 数据类型之转换
2012/04/28 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
php封装的page分页类完整实例
2016/10/18 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
在python中的socket模块使用代理实例
2014/05/29 Python
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
什么是Python中的匿名函数
2020/06/02 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
C#笔试题
2015/07/14 面试题
25道Java面试题集合
2013/05/21 面试题
开办饭店创业计划书
2013/12/28 职场文书
上学迟到的检讨书
2014/01/11 职场文书
办公室岗位职责
2014/02/12 职场文书
农村婚礼主持词
2014/03/13 职场文书
学校师德师风整改方案
2014/10/28 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
城南旧事读书笔记
2015/06/29 职场文书