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 相关文章推荐
PHP4中实现动态代理
Oct 09 PHP
php中文本数据翻页(留言本翻页)
Oct 09 PHP
PHP入门学习的几个不错的实例代码
Jul 13 PHP
php弹出对话框实现重定向代码
Jan 23 PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 PHP
给WordPress的编辑后台添加提示框的代码实例分享
Dec 25 PHP
PHP封装的MSSql操作类完整实例
May 26 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
php弹出提示框的是实例写法
Sep 26 PHP
浅谈如何提高PHP代码的质量
May 28 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实现小型站点广告管理(修正版)
2006/10/09 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
自制PHP框架之设计模式
2017/05/07 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
python单例模式实例解析
2018/08/28 Python
python多线程扫描端口(线程池)
2019/09/04 Python
python实现操作文件(文件夹)
2019/10/31 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
浅析NumPy 切片和索引
2020/09/02 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
印度网上药店:1mg
2017/10/13 全球购物
北大研究生linux应用求职信
2013/10/29 职场文书
担保书怎么写
2014/04/01 职场文书
我的长生果教学反思
2014/04/28 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
2015年消防工作总结
2015/04/24 职场文书
收入证明怎么写
2015/06/12 职场文书
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript