设为首页   加入最爱           最新更新:全方位英文文章资料库
 
资料坊搜索: 标题 全文     
轻量级的xml文档生成类
   首页>>YesizeCOM>>电脑技能坊>>PHP>>正文       
 
广告招租,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(>=>&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);
?>


上一篇:一个用于MySQL的PHP XML类 下一篇:php与XML、XSLT、Mysql的结合运用,安装篇

版权说明:作品来源于网上,版权归作者所有,如果无意中侵犯了您的版权,请来信告知,本站将在3个工作日内删除。yesize@hotmail.com
  热门小游戏分类 
射击小游戏 连连看小游戏
台球小游戏 成人小游戏
CS小游戏 化妆小游戏
赛车小游戏 休闲小游戏
篮球小游戏 换装小游戏
儿童小游戏 牛牛小游戏
麻将小游戏 冒险小游戏
美媚小游戏 益智小游戏
体育小游戏  
Society Recreation & Sports
Travel & Leisure Communications
Vehicles Computers
Fashion Arts & Entertainment
Reference & Education Disease & Illness
Writing & Speaking Politics
Product Reviews Food & Beverage
Finance Internet Business
Self Improvement Home & Family
Health & Fitness Business
最新更新内容
警惕“公务员报考热”背
公务员考试不是丈母娘考
一名新公务员的自白:我
公务员考脑筋急转弯与挂
北努斗:2006行政能力测
大讨论:06行测BT题目大
过来人回忆:当年,我也
一家之言:公务员热折射
公务员考试申论要是有正
数十万大学生走进公务员
      粤ICP备05005424         Copyright ©2000 - 2004 Yesize.COM