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 相关文章推荐
针对初学PHP者的疑难问答(2)
Oct 09 PHP
关于mysql 字段的那个点为是定界符
Jan 15 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
php通过文件流方式复制文件的方法
Mar 13 PHP
PHP自动生成表单代码分享
Jun 19 PHP
PHP数据库操作Helper类完整实例
May 11 PHP
PHP生成推广海报的方法分享
Apr 22 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 PHP
PHP通过curl获取接口URL的数据方法
May 31 PHP
PHP数组对象与Json转换操作实例分析
Oct 22 PHP
PHP autoload使用方法及步骤详解
Sep 05 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
改进的IP计数器
2006/10/09 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
事件模型在各浏览器中存在差异
2010/10/20 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
JavaScript中创建原子的方法总结
2018/08/26 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
python assert的用处示例详解
2019/04/01 Python
【python】matplotlib动态显示详解
2019/04/11 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
酒店前台接待岗位职责
2013/12/03 职场文书
毕业生就业自荐书
2013/12/15 职场文书
mysql 获取时间方式
2022/03/20 MySQL
docker-compose部署Yapi的方法
2022/04/08 Servers