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 相关文章推荐
COM in PHP (winows only)
Oct 09 PHP
一个图形显示IP的PHP程序代码
Oct 19 PHP
PHP之变量、常量学习笔记
Mar 27 PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
php中使用cookie来保存用户登录信息的实现代码
Mar 08 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
CodeIgniter生成静态页的方法
May 17 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
thinkPHP微信分享接口JSSDK用法实例
Jul 07 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
PHP实现的AES双向加密解密功能示例【128位】
Sep 03 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
MySQL连接数超过限制的解决方法
2011/07/17 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
asp.net和php的区别点总结
2019/10/10 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
从0开始学Vue
2016/10/27 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
vue cli 全面解析
2018/02/28 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
python爬虫的工作原理
2017/03/05 Python
python语音识别实践之百度语音API
2018/08/30 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
python 8种必备的gui库
2020/08/27 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
与UNIX有关的几个名词
2015/09/17 面试题
销售员试用期自我评价
2014/09/15 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
实验室安全管理制度
2015/08/05 职场文书