当前位置:首页 > PHP教程 > php应用 > 列表

php的XML文件解释类应用实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-14 10:43:56 浏览: 评论:0 

这篇文章主要介绍了php的XML文件解释类及其应用实例,包括针对XML文件的读取、解释、检查及输出等功能,非常实用,需要的朋友可以参考下

本文实例讲述了php的XML文件解释类及其用法,是非常实用的技巧。分享给大家供大家参考。具体如下:

XMLParser.class.php类文件如下:

  1. <?php  
  2. /** XML 文件分析类  
  3. *  Date:  2013-02-01  
  4. *  Author: fdipzone  
  5. *  Ver:  1.0  
  6.  
  7. *  func:  
  8. *  loadXmlFile($xmlfile)   读入xml文件输出Array  
  9. *  loadXmlString($xmlstring) 读入xmlstring 输出Array  
  10. */ 
  11.    
  12. class XMLParser{  
  13.    
  14.   /** 读取xml文件  
  15.   * @param String $xmlfile  
  16.   * @return Array  
  17.   */ 
  18.   public function loadXmlFile($xmlfile){  
  19.     // get xmlfile content  
  20.     $xmlstring = file_exists($xmlfile)? file_get_contents($xmlfile) : '';  
  21.     // parser xml  
  22.     list($flag$data) = $this->parser($xmlstring);  
  23.     return $this->response($flag$data);  
  24.   }  
  25.    
  26.   /** 读取xmlstring  
  27.   * @param String $xmlstring  
  28.   * @return Array  
  29.   */ 
  30.   public function loadXmlString($xmlstring){  
  31.     // parser xml  
  32.     list($flag$data) = $this->parser($xmlstring);  
  33.     return $this->response($flag$data);  
  34.   }  
  35.    
  36.   /** 解释xml内容  
  37.   * @param  String $xmlstring  
  38.   * @return Array  
  39.   */ 
  40.   private function parser($xmlstring){  
  41.     $flag = false;  
  42.     $data = array();  
  43.     // check xml format  
  44.     if($this->checkXmlFormat($xmlstring)){  
  45.       $flag = true;  
  46.       // xml to object  
  47.       $data = simpleXML_load_string($xmlstring'SimpleXMLElement', LIBXML_NOCDATA);  
  48.       // object to array  
  49.       $this->objectToArray($data);  
  50.     }  
  51.     return array($flag$data);  
  52.   }  
  53.    
  54.   /** 检查xml格式是否正确  
  55.   * @param String $xmlstring  
  56.   * @return boolean  
  57.   */ 
  58.   private function checkXmlFormat($xmlstring){  
  59.     if($xmlstring==''){  
  60.       return false;  
  61.     }  
  62.     $xml_parser_obj = xml_parser_create();  
  63.    
  64.     if(xml_parse_into_struct($xml_parser_obj$xmlstring$vals$indexs)===1){ // 1:success 0:fail  
  65.       return true;  
  66.     }else{  
  67.       return false;  
  68.     }  
  69.   }  
  70.    
  71.   /** object 转 Array  
  72.   * @param object $object  
  73.   * @return Array  
  74.   */ 
  75.   private function objectToArray(&$object){  
  76.        
  77.     $object = (array)$object;  
  78.        
  79.     foreach($object as $key => $value){  
  80.       if($value==''){  
  81.         $object[$key] = "";  
  82.       }else{  
  83.         if(is_object($value) || is_array($value)){  
  84.           $this->objectToArray($value);  
  85.           $object[$key] = $value;  
  86.         }  
  87.       }  
  88.     }  
  89.   }  
  90.    
  91.   /** 输出返回  
  92.   * @param boolean $flag true:false  
  93.   * @param Array  $data 转换后的数据  
  94.   * @return Array  
  95.   */ 
  96.   private function response($flag=false, $data=array()){  
  97.     return array($flag$data);  
  98.   }  
  99. }  
  100. ?> 

Demo示例程序如下:

  1. <?php  
  2. require "XMLParser.class.php";  
  3.    
  4. $xmlfile = 'file.xml';  
  5. $xmlstring = '<?xml version="1.0" encoding="utf-8"?>  
  6. <xmlroot>  
  7. <status>1000</status>  
  8. <info></info>  
  9. <result><id>100</id>  
  10. <name>fdipzone</name>  
  11. <gender>1</gender>  
  12. <age>28</age>  
  13. </result>  
  14. </xmlroot>';  
  15. echo '<pre>';  
  16. $xml_parser = new XMLParser();  
  17. echo "response xmlfile\r\n";  
  18. list($flag$xmldata) = $xml_parser->loadXmlFile($xmlfile);  
  19. if($flag){  
  20.   print_r($xmldata);  
  21. }  
  22. echo "response xmlstring\r\n";  
  23. list($flag$xmldata) = $xml_parser->loadXmlString($xmlstring);  
  24. if($flag){  
  25.   print_r($xmldata);  
  26. }  
  27. echo '</pre>';  
  28. ?>  

关于PHP的XML预定义常量可参考官方文档:

http://www.php.net/manual/en/libxml.constants.php

希望本文所述对大家PHP程序设计的学习有所帮助。

Tags: XML文件解释类

分享到: