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 相关文章推荐
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
php 自写函数代码 获取关键字 去超链接
Feb 08 PHP
并发下常见的加锁及锁的PHP具体实现代码
Oct 12 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
linux系统下php安装mbstring扩展的二种方法
Jan 20 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
Dec 05 PHP
PHP输出两个数字中间有多少个回文数的方法
Mar 23 PHP
PHP下载远程文件到本地存储的方法
Mar 24 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
利用ajax和PHP实现简单的流程管理
Mar 23 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二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
PHP之sprintf函数用法详解
2014/11/12 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
使用javascript插入样式
2016/03/14 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
python pandas修改列属性的方法详解
2018/06/09 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
善意的谎言事例
2014/02/15 职场文书
团支部推优材料
2014/05/21 职场文书
企业安全生产标语
2014/06/06 职场文书
后勤个人工作总结
2015/02/28 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL