php中实现xml与mysql数据相互转换的方法
本文实例讲述了php中实现xml与mysql数据相互转换的方法。分享给大家供大家参考。具体分析如下:
这里提供了一个mysql2xml转换类,可以快速的把xml转换成mysql同时反之也可以把mysql转换成xml,下面看代码.
mysql2xml.php类文件,用于备份MySQL数据的,代码如下:
<?php classMySQL2XML{ protected$conn; protected$result; protected$tables; protected$saveFolder='datas/'; publicfunction__construct($config=NULL){ if($config!==NULL&&is_array($config)){ $this->connect($config); } } publicfunctionconnect($config){ $this->conn=mysql_connect($config['host'],$config['username'],$config['password']); if($this->conn){ mysql_select_db($config['database']); returntrue; } returnfalse; } publicfunctionsetSaveFolder($folder){ if(is_dir($folder)){ $this->saveFolder=rtrim(str_replace("\","/",$folder),'/'); returntrue; } returnfalse; } publicfunctionsetTables($tables){ if(is_array($tables)){ $this->tables=$tables; returntrue; } returnfalse; } publicfunctionquery($query){ if(!isset($query)||trim($query)=='')returnfalse; $this->result=mysql_query($query); if($this->result)returntrue; returnfalse; } publicfunctiontoXML(){ if(!isset($this->tables))returnfalse; foreach($this->tablesas$table){ $file=$this->saveFolder.$table.'.xml'; $fp=@fopen($file,'w'); if(!$fp)exit('Cannotwritefile'); fwrite($fp,$this->tableToXML($table)); fclose($fp); unset($fp); } returntrue; } publicfunctiontableToXML($table){ header("content-type:text/xml;charset=utf-8"); $xml="<?xmlversion="1.0"encoding="utf-8"?>n<datas>n"; $fields=$this->getFields($table); $datas=$this->getDatas($table); $cdata=array(); foreach($datasas$data){ foreach($dataas$key=>$value) $cdata[$key][]=$value; } foreach($fieldsas$element){ $xml.="t<fieldsname="{$element['Field']}"type="{$element['Type']}"null="{$element['Null']}"key="{$element['Key']}"default="{$element['Default']}"extra="{$element['Extra']}">n"; foreach($cdata[$element['Field']]as$value){ $xml.="tt<data>{$value}</data>n"; } $xml.="t</fields>n"; } $xml.='</datas>'; return$xml; } protectedfunctiongetFields($table){ $query="SHOWFIELDSFROM{$table}"; $this->query($query); return$this->fetchAll(); } protectedfunctiongetDatas($table){ $query="SELECT*FROM{$table}"; $this->query($query); return$this->fetchAll(); } protectedfunctionfetch(){ if(is_resource($this->result)){ returnmysql_fetch_assoc($this->result); } returnfalse; } protectedfunctionfetchAll(){ if(is_resource($this->result)){ $return=array(); $row=NULL; while($row=mysql_fetch_assoc($this->result)){ $return[]=$row; } return$return; } returnfalse; } } ?>
调用方法,代码如下:
<?php $xml=newMySQL2XML(array('host'=>'localhost','username'=>'root','password'=>'','database'=>'mysql')); $xml->setTables(array('wp_term_relationships','wp_terms'));//设置备份的表 $xml->setSaveFolder('datas/');//保存备份文件的文件夹 $xml->toXML();//备份开始 ?>
希望本文所述对大家的php程序设计有所帮助。