• php4的一个创建xml的类


    <?php
    /**************author:lazy**************/
    /******Email:o0lazy0o at gmail dot com******/
    /***********publish at 06/04/14**********/
    /**************License:GNU*************/
    class xml{
    var $version;
    var $encoding;
    var $start;
    var $end;
    var $filename;
    var $xml_document;
    var $root_start;
    var $root_end;

    function xml($ver='1.0',$encoding='utf-8'){
       $this->version="<?xml version=\"{$ver}\" encoding=\"{$encoding}\"?>";
    }

    function new_xml($filename){
       $this->filename=$filename;
       return true;
    }

    function root($element){
       $element=$this->filter($element);
       if(isset($this->start) and isset($this->end)){
        exit("error:Only one top level element is allowed in an XML document.\r\n");
       }else{
        $this->start="<$element>";
        $this->end="</$element>";
        $this->xml_document=$this->version."\n".$this->start."\n";
        return true;
       }
    }

    function append_root_node($title,$property=null,$pro_val=null){
       $title=$this->filter($title);
       $property=$this->filter($property);
       $pro_val=$this->filter($pro_val);
       $property!=null?$pro_str=" $property=\"$pro_val\"":$property=null;
       $contents="<{$title}{$pro_str}>\n";
       $this->xml_document.=$contents;
       $this->root_end="</$title>";
       return true;
    }

    function append_root_node_end(){
       $this->xml_document.=$this->root_end."\n";
       return true;
    }

    function append_child_node($title='undefined',$contents='undefined',$property=null,$pro_val=null,$cddate=false){
       isset($property)?$pro_str=" $property=\"$pro_val\"":$property=null;
       $title=$this->filter($title);
       $contents=$this->filter($contents,false);
       $property=$this->filter($property);
       $pro_val=$this->filter($pro_val);
       $cddate===false?$cddate=false:$cddate=true;
       if($cddate){
        $contents="<{$title}{$pro_str}><![CDATA['\n$contents\n']]></$title>\n";
       }else{
        $contents="<{$title}{$pro_str}>$contents</$title>";
       }
       $this->xml_document.=$contents."\n";
       return true;
    }

    function display(){
       header("Content-type: text/xml");
       $xml=$this->xml_document."\n".$this->end;
       echo $xml;
       return true;
    }

    function filter($sring,$replace_null=true){
       $filter[]='"';
       $filter[]="\\";
       $filter[]="\n";
       $filter[]="\r";
       $filter[]="\t";
       $replace_null===true?$filter[]=" ":$replace_null=false;
       foreach ($filter as $val){
        $sring=str_replace($val,'',$sring);
       }
       return $sring;
    }

    function encode(){
       //you can add the convert encode function here or add other class to do that
    }

    function save(){
       $this->xml_document=$this->xml_document.$this->end;
       $handle=fopen($this->filename,'wb+');
       $result=fwrite($handle,$this->xml_document);
       fclose($handle);
       if($result){
        return true;
       }else{
        echo "error:can't write to files,maybe the access denied.try to chmod 777 the directory?";
        return false;
       }
    }
    }
    使用方法:
    $test=new xml();
    $test->new_xml('test.xml');
    $test->root('document');
    $test->append_root_node('book');
    $test->append_child_node('author','linage');
    $test->append_child_node('page',100);
    $test->append_child_node('money','35 RMB');
    $test->append_root_node_end();
    $test->append_root_node('book','name','The"Web"Servers');
    $test->append_child_node('a u t ho"r','li n a g e');
    $test->append_child_node('page',100);
    $test->append_child_node('money','35 RMB');
    $test->append_root_node_end();
    $test->display();
    $test->save();
    生成的xml结果:
    <?xml version="1.0" encoding="utf-8"?>
    <document>
    <book>
    <author>linage</author>
    <page>100</page>
    <money>35 RMB</money>
    </book>
    <book name="TheWebServers">
    <author>li n a g e</author>
    <page>100</page>
    <money>35 RMB</money>
    </book>
    </document>
  • 相关阅读:
    Grid 拾遗
    WPF 依赖属性
    升级cordova
    oracle比较一行的最大值或最小值
    nginx完全关闭log
    hive计算周一的日期
    查看linux文件目录的大小和文件夹包含的文件数
    linux设置服务器时间同步
    oracle取出多个字段列中的最大值和最小值
    oracle SQL语句取本周本月本年的数据
  • 原文地址:https://www.cnblogs.com/ybbqg/p/2399665.html
Copyright © 2020-2023  润新知