• 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

  • 相关阅读:
    VC 常见问题百问
    python windows 环境变量
    Check server headers and verify HTTP Status Codes
    Where are the AES 256bit cipher suites? Please someone help
    outlook 如何预订会议和会议室
    安装Axis2的eclipse插件后,未出现界面
    windows 环境变量
    python 时间日期处理汇集
    openldap学习笔记(使用openldap2.3.32)
    set p4 environment in windows
  • 原文地址:https://www.cnblogs.com/fdipzone/p/3715139.html
Copyright © 2020-2023  润新知