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 相关文章推荐
一个目录遍历函数
Oct 09 PHP
php代码优化及php相关问题总结
Oct 09 PHP
PR值查询 | PageRank 查询
Dec 20 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
Dec 25 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
PHP判断表单复选框选中状态完整例子
Jun 24 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
php随机抽奖实例分析
Mar 04 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 PHP
php高清晰度无损图片压缩功能的实现代码
Dec 09 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面试题附答案
2009/01/07 PHP
php实现分页工具类分享
2014/01/09 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
php实现的简单检验登陆类
2015/06/18 PHP
PHP微商城开源代码实例
2019/03/27 PHP
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
[00:37]2016完美“圣”典风云人物:AMS宣传片
2016/12/06 DOTA
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
Python常用库推荐
2016/12/04 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Python tkinter label 更新方法
2018/10/11 Python
python实时监控logstash日志代码
2020/04/27 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
某公司Java工程师面试题笔试题
2016/03/27 面试题
个人自我鉴定范文
2013/10/04 职场文书
英语道歉信范文
2014/01/09 职场文书
房产代理公证处委托书
2014/04/04 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
七年级地理教学计划
2015/01/22 职场文书
南京导游词
2015/02/03 职场文书
教师研修随笔感言
2015/11/18 职场文书