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之COOKIE支持详解
Oct 09 PHP
PHP 多维数组排序实现代码
Aug 05 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
php feof用来识别文件末尾字符的方法
Aug 01 PHP
php生成图形(Libchart)实例
Nov 06 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
destoon实现公司新闻详细页添加评论功能的方法
Jul 15 PHP
php创建session的方法实例详解
Jan 27 PHP
PHP的Yii框架中Model模型的学习教程
Mar 29 PHP
php中array_column函数简单实现方法
Jul 11 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 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与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
简单的php文件上传(实例)
2013/10/27 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
JsRender实用入门教程
2014/10/31 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
vue实现扫码功能
2020/01/17 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
Python根据区号生成手机号码的方法
2015/07/08 Python
深入理解python对json的操作总结
2017/01/05 Python
Python做简单的字符串匹配详解
2017/03/21 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
红旗方阵解说词
2014/02/12 职场文书
便利店促销方案
2014/02/20 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
《泉水》教学反思
2014/04/11 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
出国签证在职证明范本
2014/11/24 职场文书
财务会计求职信范文
2015/03/20 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
罗马假日观后感
2015/06/08 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL