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 cookie的操作实现代码(登录)
Dec 29 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
php _autoload自动加载类与机制分析
Feb 10 PHP
php 对输入信息的进行安全过滤的函数代码
Jun 29 PHP
php比较多维数组中值的大小排序实现代码
Sep 08 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 PHP
php获取网页上所有链接的方法
Apr 03 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
Sep 27 PHP
PHP解析url并得到url参数方法总结
Oct 11 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 PHP
Laravel配合jwt使用的方法实例
Oct 25 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
mysql 全文搜索 技巧
2007/04/27 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
Python实现全局变量的两个解决方法
2014/07/03 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
Django实现分页显示效果
2019/10/31 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
python基于opencv 实现图像时钟
2021/01/04 Python
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
企业党建工作汇报材料
2014/08/19 职场文书
机关作风建设心得体会
2014/10/22 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
地道战观后感400字
2015/06/04 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
Java设计模式之代理模式
2022/04/22 Java/Android