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

5年以前  |  阅读数:747 次  |  编程语言:PHP 

本文实例讲述了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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例