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>
原文地址:https://www.cnblogs.com/ybbqg/p/2399665.html