php 动态创建XML文件类

PHP利用DOMDoucment动态创建XML文件,已封装为类,简单实效,支持多节点扩展。先上代码

<?php
/*
动态创建XML文件类
功能:支持多节点扩展
createXMLClass.php
原创,引用请保留此信息
writed by adengou 2014.1.6

*/

 header('Content-Type: text/html; charset=utf-8');

class CcreateXML{
protected $file;//完整的文件路径
protected  $root;//节点名称;默认root
protected $dom;//dom对象
protected $charet;//编码默认utf-8
private $fatherNode;//父节点
private $fatherNodeName;//父节点名称
//
public $resultContent;//显示结果
public  $succeed;//创建是否成功

public  $creMsg; //创建信息

public function __construct($path_filename,$root='root',$charet='utf-8'){

//建立构造函数
$this->file = $path_filename;
$this->charet = $charet;
$this->dom = new DOMDocument('1.0',$charet);//创建DOMDocument对象
$this->root = $root;
$this->succeed = 0;
$this->creMsg ="";
}
public function __destruct() {
//析构函数
      unset($this->dom);//销毁对象
 fclose($this->file);//关闭文件
   }
private function fnExistFile(){
$handle = fopen ($this->file,"w"); #fopen,即打开文件,若文件不存在,则自动创建;
         if (!is_writable ($this->file)){
$this->creMsg .= "文件:".$filename."不可写,请检查其属性后重试!";
$this->succeed = 0;
}
else{
 $this->succeed = 1;
    }
return $this->succeed;
}
public function fnCreateRoot(){
//创建根节点
 if($this->fnExistFile()){
$this->fatherNodeName =$this->root;
$module=$this->dom->createElement($this->root);// 建立根节点名称//赋值
$this->dom->appendChild($module);//创建该值
$this->fatherNode =$module;
$this->succeed = 1;
$this->fatherNode =$module;
  }
 else
 {
 $this->succeed = 0;
 $this->fatherNode=NULL;
 }
 return   $this->fatherNode;
}
public function fnCreateNode($fatherNode,$chilNodeName='childNode',$id=NULL,$name=NULL,$content=NULL){

//创建子节点,包括子节点名称、ID,NAME,内容


 if($this->succeed){
 $chilNode=$this->dom->createElement($chilNodeName);       // 增加第一个子节点,名称为$chilNodeName//赋值
if($name!=NULL){
$varit_name=$this->dom->createAttribute('name');     //建立第一个子节点的一个属性,名为'name'//赋值
   $varit_name->nodeValue=$name;              //name的值为'$name'
$chilNode->setAttributeNode($varit_name); //第一个节点添加$name的内容//创建该值
}

if($id!=NULL){
$varit_id=$this->dom->createAttribute("id");     //建立第一个子节点的一个属性,名为'name'//赋值
$varit_id->nodeValue=$id;              //name的值为'最新动态'
$chilNode->setAttributeNode($varit_id); //第一个节点添加$name的内容//创建该值

}


if($content!=NULL){
$varit_value=$this->dom->createTextNode($content); //增加节点内容
$chilNode->appendChild($varit_value); //第一个节点添加$name的内容//创建该值
}
//
   $fatherNode->appendChild($chilNode);             //闭合$chilNode节点
//

$this->creMsg .="<br/>文件: ".$this->file."写入节点 ".$this->fatherNodeName."->".$chilNodeName. " 成功";
$this->succeed = 1 ;
$this->fatherNode = $chilNode;
}else{
$this->creMsg .="<br/>文件: ".$this->file."写入节点 ".$this->fatherNodeName."->".$chilNodeName. " 失败";
$this->succeed = 0 ;
$this->fatherNode = NULL;
}
 // if end
$this->fatherNodeName =$chilNodeName;
 return $this->fatherNode;
//fn end
}
 
public function fnCreateXMLfile(){
//创建XML文件
 $this->resultContent =  $this->dom->saveXML();//在屏幕上输出XML
 $this->dom->save($this->file);//保存XML文件
 chmod ($this->file,0666);//设置该文件的读写属
}
//class end  
 }

 ?>


 <?php
 //应用范例
//test.php
 /*
include_once("createXMLClass.php");
$xml = new CcreateXML("test/1.xml","math","utf-8");
$faterNode = $xml->fnCreateRoot();
$f1 = $xml->fnCreateNode($faterNode,"p","p1");
if($f1!=NULL){
$xml->fnCreateNode($f1,"dood","ld","lp","good1");
$g2=$xml->fnCreateNode($f1,"dood2","ld2","lp2");
}
$f2=$xml->fnCreateNode($faterNode,"s","s1");
if($f2!=NULL){
$xml->fnCreateNode($f2,"d","d","d","d");
$xml->fnCreateNode($f2,"d2","d","d","d");
}
$f3=$xml->fnCreateNode($faterNode,"p","p2");
if($f3!=NULL){
$xml->fnCreateNode($f3,"f3_1","f3_1","f3_1","f3_1");
$xml->fnCreateNode($f3,"f3_2","f3_2","d2","d442");
}
if($g2!=NULL){
$h= $xml->fnCreateNode($g2,"g_1","g_1","g_1");
$xml->fnCreateNode($g2,"g_2","g_2","g2","g2");
}
if($h!=NULL)
{
$xml->fnCreateNode($h,"h","h","h","h");
$xml->fnCreateNode($h,"h2","h2","h2","h2");
}
$xml->fnCreateXMLfile();
echo $xml->creMsg;
*/
?>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值