zoukankan      html  css  js  c++  java
  • php写的 xml操作类

    XML作为轻量级的数据库还是挺好用的,当XML不超过2M大小的时候读取速度还是很快的。以下提供我自己写的XML操作类。

    如果用户想循环利用XML作为数据库的话,只要记录节点总数,当到达一个饱和数量时,又重新初始化XML即可。

    <?php
    class requirelog
    {
        
    protected static $requirelog;

        
    //get ready for xml,if xml is not found ,create xml
        static function _initializeLog()
        {
           
    if(file_exists('requirelog.xml'))
           {

               self
    ::$requirelog = DOMDocument::load('requirelog.xml');
           }
           
    else
           {
               self
    ::$requirelog = new DOMDocument('1.0', 'iso-8859-1');
               self
    ::$requirelog->loadXML('<?xml version="1.0" encoding="UTF-8"?><contents></contents>');
               self
    ::$requirelog->save('requirelog.xml');
           }
        }



        
    //获取finish字段全部为0的所有节点
        public static function get_entrys()
        {
                self
    ::_initializeLog();
                
    $entrys = self::$requirelog->getElementsByTagName('entry');
                
    $entry_arrays = array();
                
    foreach($entrys as $entry)
                {
                    
    if($entry->getElementsByTagName('finish')->item(0)->nodeValue == 0)
                    {
                        
    $entry_array = array();
                        
    $entry_array['id'= $entry->getElementsByTagName('id')->item(0)->nodeValue;
                        
    $entry_array['time'= $entry->getElementsByTagName('time')->item(0)->nodeValue;
                        
    $entry_array['operator'= $entry->getElementsByTagName('operator')->item(0)->nodeValue;
                        
    $entry_array['byoperator'= $entry->getElementsByTagName('byoperator')->item(0)->nodeValue;
                        
    $entry_array['parameters1'= $entry->getElementsByTagName('parameters1')->item(0)->nodeValue;
                        
    $entry_array['parameters2'= $entry->getElementsByTagName('parameters2')->item(0)->nodeValue;
                        
    $entry_array['parameters3'= $entry->getElementsByTagName('parameters3')->item(0)->nodeValue;

                        
    $entry_array['type'= $entry->getElementsByTagName('type')->item(0)->nodeValue;
                        
    $entry_array['module'= $entry->getElementsByTagName('module')->item(0)->nodeValue;
                        
    $entry_array['finish'= $entry->getElementsByTagName('finish')->item(0)->nodeValue;
                        
    $entry_arrays[] = $entry_array;
                    }
                }
                
    return  $entry_arrays;
        }

        
        
    //获取所有的节点
        public static function get_count_entrys()
        {
                self
    ::_initializeLog();
                
    $entrys = self::$requirelog->getElementsByTagName('entry');
                
    $entry_arrays = array();
                
    foreach($entrys as $entry)
                {

                    
    $entry_array = array();
                    
    $entry_array['id'= $entry->getElementsByTagName('id')->item(0)->nodeValue;
                    
    $entry_array['time'= $entry->getElementsByTagName('time')->item(0)->nodeValue;
                    
    $entry_array['operator'= $entry->getElementsByTagName('operator')->item(0)->nodeValue;
                    
    $entry_array['byoperator'= $entry->getElementsByTagName('byoperator')->item(0)->nodeValue;
                    
    $entry_array['parameters1'= $entry->getElementsByTagName('parameters1')->item(0)->nodeValue;
                    
    $entry_array['parameters2'= $entry->getElementsByTagName('parameters2')->item(0)->nodeValue;
                    
    $entry_array['parameters3'= $entry->getElementsByTagName('parameters3')->item(0)->nodeValue;

                    
    $entry_array['type'= $entry->getElementsByTagName('type')->item(0)->nodeValue;
                    
    $entry_array['module'= $entry->getElementsByTagName('module')->item(0)->nodeValue;
                    
    $entry_array['finish'= $entry->getElementsByTagName('finish')->item(0)->nodeValue;
                    
    $entry_arrays[] = $entry_array;

                }
                
    return  $entry_arrays;
        }

        
    //根据ID获取节点
        public static function get_entry($id)
        {
            self
    ::_initializeLog();
            
    $count=count(self::get_count_entrys());
            
    if($count > 0)
            {
                
    $entrys = self::$requirelog->getElementsByTagName('entry');
                
    foreach($entrys as $entry)
                {
                    
    if ($id == $entry->getElementsByTagName('id')->item(0)->nodeValue)
                    {
                        
    $entry_array = array();
                        
    $entry_array['id'= $entry->getElementsByTagName('id')->item(0)->nodeValue;
                        
    $entry_array['time'= $entry->getElementsByTagName('time')->item(0)->nodeValue;
                        
    $entry_array['operator'= $entry->getElementsByTagName('operator')->item(0)->nodeValue;
                        
    $entry_array['byoperator'= $entry->getElementsByTagName('byoperator')->item(0)->nodeValue;
                        
    $entry_array['parameters1'= $entry->getElementsByTagName('parameters1')->item(0)->nodeValue;
                        
    $entry_array['parameters2'= $entry->getElementsByTagName('parameters2')->item(0)->nodeValue;
                        
    $entry_array['parameters3'= $entry->getElementsByTagName('parameters3')->item(0)->nodeValue;

                        
    $entry_array['type'= $entry->getElementsByTagName('type')->item(0)->nodeValue;
                        
    $entry_array['module'= $entry->getElementsByTagName('module')->item(0)->nodeValue;
                        
    $entry_array['finish'= $entry->getElementsByTagName('finish')->item(0)->nodeValue;
                        
    return $entry_array;
                    }
                }
            }
            
    else
                
    return null;
        }

        
    //执行完用户请求,更改finsh字段
        public static function do_finsh($id)
        {
            self
    ::_initializeLog();
            
    $entrys = self::$requirelog->getElementsByTagName('entry');
            
    $entry_arrays = array();
            
    foreach($entrys as $entry)
            {
                
    if($entry->getElementsByTagName('id')->item(0)->nodeValue == $id)
                {
                    
    $entry->getElementsByTagName('finish')->item(0)->nodeValue = 1;
                }
            }

            self
    ::$requirelog->save('requirelog.xml');
        }


        
    //增加新节点,$operator为操作者,$byoperator是被操作对象,$parameters1,2,3为可扩展的参数,$type为类型,$module为影响的模块
       static function add_entry($operator,$byoperator,$parameters1,$parameters2,$parameters3,$type,$module)
        {
            
    //$contents = self::$restlog->getElementsByTagName('contents');

            self
    ::_initializeLog();
            
    $count=count(self::get_count_entrys());

            
    $entry = self::$requirelog->createElement('entry');

            
    $id = self::$requirelog->createElement('id');
            
    $idvalue = self::$requirelog->createTextNode($count+1);
            
    $id->appendChild($idvalue);

            
    $time = self::$requirelog->createElement('time');
            
    $timevalue = self::$requirelog->createTextNode(date("Y-m-d H:i:s",time()));
            
    $time->appendChild($timevalue);

            
    $op = self::$requirelog->createElement('operator');
            
    $opvalue = self::$requirelog->createTextNode($operator);
            
    $op->appendChild($opvalue);

            
    $bop = self::$requirelog->createElement('byoperator');
            
    $bopvalue = self::$requirelog->createTextNode($byoperator);
            
    $bop->appendChild($bopvalue);

            
    $ps1 = self::$requirelog->createElement('parameters1');
            
    $ps1value = self::$requirelog->createTextNode($parameters1);
            
    $ps1->appendChild($ps1value);

            
    $ps2 = self::$requirelog->createElement('parameters2');
            
    $ps2value = self::$requirelog->createTextNode($parameters2);
            
    $ps2->appendChild($ps2value);

            
    $ps3 = self::$requirelog->createElement('parameters3');
            
    $ps3value = self::$requirelog->createTextNode($parameters3);
            
    $ps3->appendChild($ps3value);


            
    $tp = self::$requirelog->createElement('type');
            
    $tpvalue = self::$requirelog->createTextNode($type);
            
    $tp->appendChild($tpvalue);

            
    $md = self::$requirelog->createElement('module');
            
    $mdvalue = self::$requirelog->createTextNode($module);
            
    $md->appendChild($mdvalue);

            
    $fi = self::$requirelog->createElement('finish');
            
    $fivalue = self::$requirelog->createTextNode(0);
            
    $fi->appendChild($fivalue);


            
    $entry->appendChild($id);
            
    $entry->appendChild($time);
            
    $entry->appendChild($op);
            
    $entry->appendChild($bop);
            
    $entry->appendChild($ps1);
            
    $entry->appendChild($ps2);
            
    $entry->appendChild($ps3);
            
    $entry->appendChild($tp);
            
    $entry->appendChild($md);
            
    $entry->appendChild($fi);


            self
    ::$requirelog->documentElement->appendChild($entry);
            self
    ::$requirelog->save('requirelog.xml');

            
    return 1;

        }

    }

    ?>


    requirelog.xml的格式如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <contents>
       
    <entry>
          
    <id>1</id>
          
    <time>2009-11-21 16:56:33</time>
          
    <operator>peng.zhou</operator>
          
    <byoperator>zxcxzcxzczxcxz</byoperator>
          
    <parameters1>cxzcxzc</parameters1>
          
    <parameters2/>
          
    <parameters3/>
          
    <type>add_group</type>
          
    <module>cn_group</module>
          
    <finish>1</finish>
       
    </entry>
       
    <entry>
          
    <id>2</id>
          
    <time>2009-11-21 16:56:53</time>
          
    <operator>peng.zhou</operator>
          
    <byoperator>sales</byoperator>
          
    <parameters1/>
          
    <parameters2/>
          
    <parameters3/>
          
    <type>add_member</type>
          
    <module>mail_group</module>
          
    <finish>1</finish>
       
    </entry>
    </contents>
     


  • 相关阅读:
    【2020Python修炼记】web框架之choices 参数/MTV 与 MVC 模型/多对多关系的创建方法
    【2020Python修炼记】web框架之 Django的ORM语法
    进来看,让你躺着就把JavaScript学完了(三)
    进来看,让你躺着就把JavaScript学完了(二)
    进来看,让你躺着就把JavaScript学完了(一)
    一分钟了解HTML 与 CSS(乐字节,乐字节java,乐字节架构)5
    一分钟了解HTML 与 CSS(乐字节,乐字节java,乐字节架构)4
    一分钟了解HTML 与 CSS(乐字节,乐字节java,乐字节架构)3
    一分钟了解HTML 与 CSS(乐字节,乐字节java,乐字节架构)2
    一分钟了解HTML 与 CSS(乐字节,乐字节java,乐字节架构)
  • 原文地址:https://www.cnblogs.com/tianxin2001x/p/1626935.html
Copyright © 2011-2022 走看看