加入收藏 本站免责政策声明!
 
 
·注册
·登陆
·会员中心
·设为首页
 您现在的位置:首页 > 编程开发 > PHP 编程 > XML应用 > 轻量级的xml文档生成类 > 正文
相关文章
· XML1.0 中文文档(第二版)---2. 文件
· XML1.0 中文文档(第二版)---1. 绪论
· XML初学者必读
· 网站?XML?我的思考
· 了解 XML
 
每日更新
· 用XMLHTTP组件解析图片地址并保存
· php与XML、XSLT、Mysql的结合运用,代码篇
· 轻量级的xml文档生成类
· 用 PHP5 轻松解析 XML
· PHP 和 XML: 使用expat函数(三)
 
Elook_AD
 
轻量级的xml文档生成类
来源:不详  作者:佚名  时间:2006-9-2 11:37:57  字号选择:  
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');
?>
 
[发给好友]  [打印本页] [关闭窗口] [返回顶部]
 
上一篇:用 PHP5 轻松解析 XML
下一篇:php与XML、XSLT、Mysql的结合运用,代码篇
网友评论


关于本站 - 广告服务 - 免责条款 - 联系我们 - 管理团队 - 友情链接 - 为您导航
ElookCMS V1.00
Copyright © 2005-2006 Elook.Net.Cn. All Rights Reserved