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 gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
PHP实现的简单mock json脚本分享
Feb 10 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
php实现求相对时间函数
Jun 15 PHP
php curl常用的5个经典例子
Jan 20 PHP
php实现的错误处理封装类实例
Jun 20 PHP
解决出现SoapFault (looks like we got no XML document)的问题
Jun 24 PHP
PHP ADODB实现分页功能简单示例
May 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
Protoss魔法科技
2020/03/14 星际争霸
for循环连续求和、九九乘法表代码
2012/02/20 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
Python的类实例属性访问规则探讨
2015/01/30 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
深入解析Python中的__builtins__内建对象
2016/06/21 Python
python协程之动态添加任务的方法
2019/02/19 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
十一个高级MySql面试题
2014/10/06 面试题
大学团支书的自我评价分享
2013/12/14 职场文书
运动会通讯稿50字
2014/01/30 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
浅谈python数据类型及其操作
2021/05/25 Python
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS