xml 文php,轻量级的xml文档生成类_php

php代码:--------------------------------------------------------------------------------

/**

* 轻量级xml文档生成类(非dom)

* author: q3boy

* version: v0.1 aplha

http://www.gaodaima.com/46023.html轻量级的xml文档生成类_php

* 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; $ideclare); $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; $ivalue); $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&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>SS?D>');

$x1 = &$xml->addElement('test455');

$x1->setAttrib("asd",123423);

$xml->setAttrib(array("asd"=>123,'sdfgdfg'=>2341));

$xml->setAttrib("asd",123423);

/* 输出文件 */

$xml->tofile('aaa.xml');

?>

欢迎大家阅读《轻量级的xml文档生成类_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

原创文章,转载请注明: 转载自搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值