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 相关文章推荐
打造计数器DIY三步曲(中)
Oct 09 PHP
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
如何提高MYSQL数据库的查询统计速度 select 索引应用
Apr 11 PHP
PHPEXCEL 使用小记
Jan 06 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 PHP
php实现的Timer页面运行时间监测类
Sep 24 PHP
Drupal简体中文语言包安装教程
Sep 27 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 PHP
thinkPHP5框架路由常用知识点汇总
Sep 15 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 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使用PDO方法详解
2014/12/27 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
通过javascript设置css属性的代码
2009/12/28 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
javascript删除字符串最后一个字符
2014/01/14 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python实现队列的方法
2015/05/26 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
岗位职责的含义
2013/11/17 职场文书
超市业务员岗位职责
2013/12/05 职场文书
卖车协议书范例
2014/09/16 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
同学聚会祝酒词
2015/08/10 职场文书
Python3 类型标注支持操作
2021/06/02 Python