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 相关文章推荐
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
Oct 26 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
Dec 25 PHP
php组合排序简单实现方法
Oct 15 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
Oct 26 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
PHP7基于curl实现的上传图片功能
May 11 PHP
PHP之多条件混合筛选功能的实现方法
Oct 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
实现树状结构的两种方法
2006/10/09 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
php实现简单加入购物车功能
2017/03/07 PHP
初学JavaScript第二章
2008/09/30 Javascript
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
让Firefox支持event对象实现代码
2009/11/07 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
用jquery存取照片的具体实现方法
2013/06/30 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
2015/09/19 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
Python编程argparse入门浅析
2018/02/07 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python利用7z批量解压rar的实现
2019/08/07 Python
Python实现网页截图(PyQT5)过程解析
2019/08/12 Python
python 实现屏幕录制示例
2019/12/23 Python
python中有关时间日期格式转换问题
2019/12/25 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
日常奢侈品,轻松购物:Verishop
2019/08/20 全球购物
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
单位门卫岗位职责
2013/12/20 职场文书
客服部工作职责范本
2014/02/14 职场文书
工程管理英文求职信
2014/03/18 职场文书
《活见鬼》教学反思
2016/02/24 职场文书