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中安装Apache2和PHP4的权威指南
Oct 09 PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
PHP 文件系统详解
Sep 13 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
PHP获取数组最大值下标的方法
May 12 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
Jun 23 PHP
微信公众号开发之通过接口删除菜单
Feb 20 PHP
PHP简单计算两个时间差的方法示例
Jun 20 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
php ZipArchive实现多文件打包下载实例
Oct 31 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 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 读取shell管道传输过来的内容
2010/03/01 PHP
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
js静态作用域的功能。
2006/12/25 Javascript
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
angular2实现统一的http请求头方法
2018/08/13 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
python妙用之编码的转换详解
2017/04/21 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
会计应聘求职信范文
2013/12/17 职场文书
自我鉴定三原则
2014/01/13 职场文书
数字化校园建设方案
2014/05/03 职场文书
政府信息公开实施方案
2014/05/09 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
关于EntityWrapper的in用法
2022/03/22 Java/Android