zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    sql 算法 : Nested Loop,Hash Join,Merge Join介绍
    Win10 上 安装Arduino 驱动 和 Arduino IDE 1.6.9
    Learning Python 012 函数式编程 2 返回函数 匿名函数 装饰器 偏函数
    Learning Python 012 函数式编程 1 高阶函数
    Learning Python 011 高级特性 2
    Learning Python 011 高级特性 1
    Learning Python 010 函数 2
    Learning Python 010 函数 1
    Learning Python 009 dict(字典)和 set
    Could not get lock /var/lib/dpkg/lock
  • 原文地址:https://www.cnblogs.com/fdipzone/p/3715139.html
Copyright © 2011-2022 走看看