xml
            PHP代码:-------------------------------------------------------------------------------- 
 
            
/**
 * 轻量级XML文档生成类(非dom)
 * author:  q3boy 
 * version: v0.1 aplha
 * update:  2003/9/8
 * 支持Element/CDATA/Declare/attribute/Comment,可选择是否包含换行和缩进
*/
class xml {
    /** 元素名 */
    var $name;
    /** 元素值 */
    var $value;
    /** 元素类型 */
    var $type;
    /** 元素属性 */
    var $attrib;
    /** XML声明 */
    var $declare;
    /** 是否缩进换行 */
    var $space;
    /** 构造函数 */
    function xml($name='',$value='') {
        $this->name = $name;
        $this->value = $value;
        $this->declare = array();
        $this->setTypes('Element');
        $this->setAttrib(array());
        $this->setSpace(false);
    }
    /** 设置元素类型 */
    function setTypes($type) {
        $this->type = $type;
    }
    /** 设置是否缩进换行 */
    function setSpace($space) {
        $this->space = $space;
    }
    /** 设置元素属性 */
    function setAttrib($name,$value='') {
        if(is_array($name)) {
            $this->attrib = array_merge($this->attrib,$name);
        }else {
            $this->attrib[$name] = $value;
        }
    }
    /** 添加子元素 */
    function &addElement($name='',$value='') {
        if(!is_array($this->value)) {
            $this->value = array();
        }
        $xml = new xml($name,$value);
        $xml->setSpace($this->space);
        $this->value[] = &$xml;
        return $this->value[sizeof($this->value)-1];
    }
    /** 添加CDATA数据 */
    function &addCDATA($name='',$value='') {
        if(!is_array($this->value)) {
            $this->value = array();
        }
        $xml = new xml($name,$value);
        $xml->setSpace($this->space);
        $xml->setTypes('CDATA');
        $this->value[] = &$xml;
        return $this->value[sizeof($this->value)-1];
    }
    /** 添加XML声明 */
    function &addDeclare($name='',$value='') {
        if(!is_array($this->declare)) {
            $this->value = array();
        }
        $xml = new xml($name,$value);
        $xml->setSpace($this->space);
        $xml->setTypes('Declare');
        $this->declare[] = &$xml;
        return $this->declare[sizeof($this->value)-1];
    }
    /** 添加注释文本 */
    function &addComment($content='') {
        if(!is_array($this->value)) {
            $this->value = array();
        }
        $xml = new xml($content);
        $xml->setSpace($this->space);
        $xml->setTypes('Comment');
        $this->value[] = &$xml;
        return $this->value[sizeof($this->value)-1];
    }
    /** 返回xml文本流 */
    function toString($itm='',$layer=0) {
        if(!is_object($itm))$itm = &$this;
        /* 换行/缩进 */
        if($this->space) {
            $tab = str_repeat("    ",$layer);
            $tab1 = str_repeat("    ",$layer+1);
            $br = "\n";
        }
        /* XML声明 */
        for($i=0; $i
            $out = "".$itm->declare[$i]->name;
            foreach($itm->declare[$i]->attrib as $key=>$val) {
                $out .=" $key=\"".$this->encode($val)."\"";
            }
            $out.="?>$br";
        }
        /* 文档树 */
        switch($itm->type) {
            case 'CDATA':
            case 'Element':
                $out .= $tab.'name;
                foreach($itm->attrib as $key=>$val) {
                    $out .=" $key=\"".$this->encode($val)."\"";
                }
                if(is_array($itm->value)) {
                    $out .='>'.$br;
                    for($i=0; $i
                        $out .=$this->toString(&$itm->value[$i],$layer+1);
                    }
                    $out .= $tab.''.$itm->name.'>'.$br;
                }elseif($itm->value!='') {
                    $out .='>'.$br.$this->encode($itm->value,$itm->type,$tab1,$br).$br.$tab.''.$itm->name.'>'.$br;
                }else {
                    $out .=' />'.$br;
                }
                break;
            case 'Comment':
                $out .= ''.$br;
                break;
        }
        return $out;
    }
    /** 生成xml文件 */
    function toFile($file) {
        $fp = fopen($file,'w');
        fwrite($fp,trim($this->toString()));
        fclose($fp);
    }
    /** 实体引用转换 */
    function encode($content,$type='Element',$tab1='',$br='') {
        if($type=='Element') {
            return $tab1.strtr($content,array('>'=>''>','&'=>'&','"'=>'"',"'"=>'''));
        }elseif($type=='CDATA') {
            return '',']] >',$content).$br.']]>';
        }
    }
}
/* example */
/* 对象初始化 */
$xml = new xml('test');
/* 允许输出换行/缩进 */
$xml->setSpace(true);
/* 设置xml声明 */
$d = &$xml->addDeclare('xml');
$d->setAttrib("version","1.0");
/* 设置xml文档树 */
$xml1 = &$xml->addElement('test1','test1-1');
$xml1->addElement('test2','test2-1');
$x2 = &$xml1->addElement('test3','test2-2');
$x2->setAttrib("asd","1&234'\"23");
$xml1->addElement('test4','test2-3');
$xml->addElement('test455','taadsfafdsadest2-3');
$xml->addComment('adsfadsf');//注释
/* CDATA数据 */
$xml->addCDATA('cdname','dflkgmsglsd
f]gl
sdgl
asgl
sf"&ldgsldkfg]]>
sldf
gsdfgsD?FG>S
$x1 = &$xml->addElement('test455');
$x1->setAttrib("asd",123423);
$xml->setAttrib(array("asd"=>123,'sdfgdfg'=>2341));
$xml->setAttrib("asd",123423);
/* 输出文件 */
$xml->tofile('aaa.xml');
?>                   
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号