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程序设计有所帮助。