| 广告招租,e-mail:yesize@hotmail.com
|
|
广告招租,e-mail:yesize@hotmail.com
PHP代码:-------------------------------------------------------------------------------- <? /** * 轻量级XML文档生成类(非dom) * author: q3boy <q3boy@sina.com> * 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<sizeof($itm->declare); $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.<.$itm->name; foreach($itm->attrib as $key=>$val) { $out .=" $key=\"".$this->encode($val)."\""; } if(is_array($itm->value)) { $out .=>.$br; for($i=0; $i<sizeof($itm->value); $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.$itm->name.$br.-->.$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 <![CDATA[.$br.str_replace(]]>,]] >,$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&23<>4\"23"); $xml1->addElement(test4,test2-3); $xml->addElement(test455,taadsfa<><>fdsadest2-3); $xml->addComment(adsfadsf);//注释 /* CDATA数据 */ $xml->addCDATA(cdname,dflkgmsglsd f]gl sdgl asgl sf"&ldgsldkfg]]> sldf gsdfgsD?FG>S<DG>S?D<Fgsd]fglsg>>); $x1 = &$xml->addElement(test455); $x1->setAttrib("asd",123423); $xml->setAttrib(array("asd"=>123,sdfgdfg=>2341)); $xml->setAttrib("asd",123423); /* 输出文件 */ $xml->tofile(aaa.xml); ?>
版权说明:作品来源于网上,版权归作者所有,如果无意中侵犯了您的版权,请来信告知,本站将在3个工作日内删除。yesize@hotmail.com |
|