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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(3)
Oct 09 PHP
php 分页类 扩展代码
Jun 11 PHP
通过PHP CLI实现简单的数据库实时监控调度
Jul 01 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
使用PHPExcel操作Excel用法实例分析
Mar 26 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
Mar 15 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
php实现文件上传及头像预览功能
Jan 15 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 PHP
如何用PHP websocket实现网页实时聊天
May 26 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
建立文件交换功能的脚本(一)
2006/10/09 PHP
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
jquery构造器的实现代码小结
2011/05/16 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
2013/03/19 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
JavaScript手机振动API
2016/06/11 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python数组定义方法
2016/04/13 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
ansible作为python模块库使用的方法实例
2017/01/17 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
python人民币小写转大写辅助工具
2018/06/20 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
python实现远程控制电脑
2019/05/23 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
10条PHP编程习惯
2014/05/26 面试题
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
表彰先进的通报
2014/01/31 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
环保专项行动方案
2014/05/12 职场文书
后进生评语大全
2015/01/04 职场文书
导游词之无锡古运河
2019/11/14 职场文书
python实现简易名片管理系统
2021/04/11 Python
解决MySQL报“too many connections“错误
2022/04/19 MySQL