php XML文件解释类

来源:互联网 发布:流水账软件 编辑:程序博客网 时间:2024/05/22 06:42
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:
<?phprequire "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

原创粉丝点击