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 相关文章推荐
用函数读出数据表内容放入二维数组
Oct 09 PHP
PHP生成静态页面详解
Nov 19 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
php中session过期时间设置及session回收机制介绍
May 05 PHP
CodeIgniter中使用cookie的三种方式详解
Jul 18 PHP
php对数组内元素进行随机调换的方法
May 12 PHP
php中动态变量用法实例
Jun 10 PHP
php禁用函数设置及查看方法详解
Jul 25 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
详解Yii2 rules 的验证规则
Dec 02 PHP
php unlink()函数使用教程
Jul 12 PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 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判断邮箱地址是否存在的方法
2016/02/13 PHP
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
canvas学习之API整理笔记(一)
2016/12/29 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
python字典快速保存于读取的方法
2018/03/23 Python
基于Python的PIL库学习详解
2019/05/10 Python
python实现弹跳小球
2019/05/13 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
2020/03/30 Python
Python如何绘制日历图和热力图
2020/08/07 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
资深财务管理人员自我评价
2013/09/22 职场文书
中职生自我鉴定范文
2013/10/03 职场文书
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
大学生工作推荐信范文
2013/12/02 职场文书
网络编辑岗位职责
2014/03/18 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书