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

本文实例讲述了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的XML文件解释类应用实例,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。