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 相关文章推荐
php4的session功能评述(二)
Oct 09 PHP
php4的session功能评述(一)
Oct 09 PHP
php使用ICQ网关发送手机短信
Oct 30 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
php实现多城市切换特效
Aug 09 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
thinkPHP3.2.2框架行为扩展及demo示例
Jun 19 PHP
PHP convert_uudecode()函数讲解
Feb 14 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
May 15 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中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
js获取页面description的方法
2015/05/21 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
财务与信息服务专业推荐信
2013/11/28 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
学校欢迎标语
2014/06/18 职场文书
电工实训心得体会
2016/01/14 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
使用JS实现简易计算器
2021/06/14 Javascript
Java Socket实现多人聊天系统
2021/07/15 Java/Android
Python办公自动化PPT批量转换操作
2021/09/15 Python
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL
Golang日志包的使用
2022/04/20 Golang