欢迎光临
我们一直在努力

轻量级的xml文档生成类-PHP教程,XML应用

建站超值云服务器,限时71元/月

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(>=>&lt;,<=>&gt;,&=>&amp;,"=>&quot;,""=>&apos;));

}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);

?>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 轻量级的xml文档生成类-PHP教程,XML应用
分享到: 更多 (0)

相关推荐

  • 暂无文章