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中的日期处理方法集锦
Jan 02 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
PHP 日期时间函数的高级应用技巧
Oct 10 PHP
PHP入门学习笔记之一
Oct 12 PHP
PHP类与对象中的private访问控制的疑问
Nov 01 PHP
php对包含html标签的字符串进行截取的函数分享
Jun 19 PHP
php中操作memcached缓存进行增删改查数据的实现代码
Aug 15 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
May 21 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
基于PHP制作验证码
2016/10/12 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
jquery对元素拖动排序示例
2014/01/16 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
Python装饰器的函数式编程详解
2015/02/27 Python
Python中字符串对齐方法介绍
2015/05/21 Python
python制作最美应用的爬虫
2015/10/28 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
Python3爬虫关于识别检验滑动验证码的实例
2020/07/30 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
高分子材料与工程专业推荐信
2013/12/01 职场文书
团日活动总结范文
2014/04/25 职场文书
小学教育见习报告
2014/10/31 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript