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的开合式多级菜单程序
Oct 09 PHP
PR值查询 | PageRank 查询
Dec 20 PHP
php cache类代码(php数据缓存类)
Apr 15 PHP
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
PHP设计模式之命令模式的深入解析
Jun 13 PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
Aug 18 PHP
php cli配置文件问题分析
Oct 15 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
php7 图形用户界面GUI 开发示例
Feb 22 PHP
PHP 命名空间和自动加载原理与用法实例分析
Apr 29 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的FTP学习(二)
2006/10/09 PHP
用穿越火线快速入门php面向对象
2012/02/22 PHP
基于php缓存的详解
2013/05/15 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
动态加载js、css的实例代码
2016/05/26 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
Vue.js实现列表清单的操作方法
2017/11/15 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
利用Python抓取行政区划码的方法
2016/11/28 Python
python实现3D地图可视化
2020/03/25 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
Python实现微信表情包炸群功能
2021/01/28 Python
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
竞职演讲稿范文
2014/01/11 职场文书
公司离职证明范本
2014/01/13 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android