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 31 PHP
PHP对象Object的概念 介绍
Jun 14 PHP
php IP转换整形(ip2long)的详解
Jun 06 PHP
php获取当前时间的毫秒数的方法
Jan 26 PHP
19个超实用的PHP代码片段
Mar 14 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
PHP实现字符串大小写转函数的功能实例
Feb 06 PHP
PHP创建对象的六种方式实例总结
Jun 27 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 PHP
在 Laravel 6 中缓存数据库查询结果的方法
Dec 11 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 radio 单选框获取与保持值的实现代码
2010/05/15 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
js对象数组按属性快速排序
2011/01/31 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
2013/09/21 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
探究Python中isalnum()方法的使用
2015/05/18 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
python生成器用法实例详解
2019/11/22 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
重构Python代码的六个实例
2020/11/25 Python
django中ImageField的使用详解
2020/12/21 Python
2014年党务公开实施方案
2014/02/27 职场文书
品德评语大全
2014/05/05 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
Python之matplotlib绘制饼图
2022/04/13 Python
Python 视频画质增强
2022/04/28 Python