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 相关文章推荐
MySql中正则表达式的使用方法描述
Jul 30 PHP
PHP的preg_match匹配字符串长度问题解决方法
May 03 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
php中$_POST与php://input的区别实例分析
Jan 07 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
php制作简单模版引擎
Apr 07 PHP
php实现带读写分离功能的MySQL类完整实例
Jul 28 PHP
PHP实现统计在线人数功能示例
Oct 15 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
laravel 5.3 单用户登录简单实现方法
Oct 14 PHP
php中用unset销毁变量并释放内存
May 10 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
详谈PHP编码转换问题
2015/07/28 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
jQuery 位置插件
2008/12/25 Javascript
半角全角相互转换的js函数
2009/10/16 Javascript
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
使用JS动态显示文本
2017/09/09 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
台湾家适得:Homeget
2019/02/11 全球购物
C有"按引用传递"吗
2016/09/06 面试题
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
司马光教学反思
2014/02/01 职场文书
小学三年级学生评语
2014/04/22 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
解除处分决定书
2015/06/25 职场文书
格林童话读书笔记
2015/06/30 职场文书
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏