php中实现xml与mysql数据相互转换的方法


Posted in PHP onDecember 25, 2014

本文实例讲述了php中实现xml与mysql数据相互转换的方法。分享给大家供大家参考。具体分析如下:

这里提供了一个mysql2xml转换类,可以快速的把xml转换成mysql同时反之也可以把mysql转换成xml,下面看代码.

mysql2xml.php类文件,用于备份MySQL数据的,代码如下:

<?php 

class MySQL2XML { 

        protected $conn; 

        protected $result; 

        protected $tables; 

        protected $saveFolder = 'datas/'; 

         

        public function __construct($config = NULL) { 

                if($config !== NULL && is_array($config)) { 

                        $this->connect($config); 

                } 

        } 

         

        public function connect($config) { 

                $this->conn = mysql_connect($config['host'], $config['username'], $config['password']); 

                if($this->conn) { 

                        mysql_select_db($config['database']); 

                        return true; 

                } 

                return false; 

        } 

         

        public function setSaveFolder($folder) { 

                if(is_dir($folder)) { 

                        $this->saveFolder = rtrim(str_replace("\", "/", $folder),'/'); 

                        return true; 

                } 

                return false; 

        } 

         

        public function setTables($tables) { 

                if(is_array($tables)) { 

                        $this->tables = $tables; 

                        return true; 

                } 

                return false; 

        } 

         

        public function query($query) { 

                if(!isset($query) || trim($query) == '') return false; 

                $this->result = mysql_query($query); 

                if($this->result) return true; 

                return false; 

        } 

         

        public function toXML() { 

                if(!isset($this->tables)) return false; 

                foreach($this->tables as $table) { 

                        $file = $this->saveFolder.$table.'.xml'; 

                        $fp = @fopen($file, 'w'); 

                        if(!$fp) exit('Can not write file'); 

                        fwrite($fp, $this->tableToXML($table)); 

                        fclose($fp); 

                        unset($fp); 

                } 

                return true; 

        } 

         

        public function tableToXML($table) { 

                header("content-type:text/xml;charset=utf-8"); 

                $xml = "<?xml version="1.0" encoding="utf-8" ?>n<datas>n"; 

                $fields = $this->getFields($table); 

                $datas = $this->getDatas($table); 

                $cdata = array(); 

                foreach($datas as $data) { 

                        foreach($data as $key => $value) 

                                $cdata[$key][] = $value; 

                } 

                foreach($fields as $element) { 

                        $xml .= "t<fields name="{$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; 

        } 

         

        protected function getFields($table) { 

                $query = "SHOW FIELDS FROM {$table}"; 

                $this->query($query); 

                return $this->fetchAll(); 

        }

         

        protected function getDatas($table) { 

                $query = "SELECT * FROM {$table}"; 

                $this->query($query); 

                return $this->fetchAll(); 

        } 

         

        protected function fetch() { 

                if(is_resource($this->result)) { 

                        return mysql_fetch_assoc($this->result); 

                } 

                return false; 

        } 

         

        protected function fetchAll() { 

                if(is_resource($this->result)) { 

                        $return = array(); 

                        $row = NULL; 

                        while($row = mysql_fetch_assoc($this->result)) { 

                                $return[] = $row; 

                        } 

                        return $return; 

                } 

                return false; 

        } 

} 

?>

调用方法,代码如下:
<?php 

$xml = new MySQL2XML(array('host'=>'localhost', 'username'=>'root', 'password'=>'', 'database'=>'mysql')); 

$xml->setTables(array('wp_term_relationships','wp_terms'));//设置备份的表 

$xml->setSaveFolder('datas/');//保存备份文件的文件夹 

$xml->toXML();//备份开始 

?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP中header和session_start前不能有输出原因分析
Jan 11 PHP
简单的php中文转拼音的实现代码
Feb 11 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
Apr 14 PHP
PHP获取当前日期和时间及格式化方法参数
May 11 PHP
php实现递归的三种基本方式
Jul 04 PHP
PHPCMS忘记后台密码的解决办法
Oct 30 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
laravel 使用auth编写登录的方法
Sep 30 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 PHP
推荐5款跨平台的PHP编辑器
Dec 25 #PHP
主流PHP框架的优缺点对比分析
Dec 25 #PHP
10个简化PHP开发的工具
Dec 25 #PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 #PHP
PHP中文编码小技巧
Dec 25 #PHP
PHP中防止SQL注入方法详解
Dec 25 #PHP
使用PHP实现阻止用户上传成人照片或者裸照
Dec 25 #PHP
You might like
PHP 之Section与Cookie使用总结
2012/09/14 PHP
Thinkphp中数据按分类嵌套循环实现方法
2014/10/30 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
js取小数点后两位四种方法
2019/01/18 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
基于python编写的微博应用
2014/10/17 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
tensorflow自定义激活函数实例
2020/02/04 Python
django使用JWT保存用户登录信息
2020/04/22 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
Araks官网:纽约内衣品牌
2020/10/15 全球购物
大专毕业自我鉴定
2014/02/04 职场文书
四年级语文教学反思
2014/02/05 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
大学生思想道德自我评价
2015/03/09 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
总结Pyinstaller打包的高级用法
2021/06/28 Python