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 相关文章推荐
require(),include(),require_once()和include_once()区别
Mar 27 PHP
php PDO中文乱码解决办法
Jul 20 PHP
php checkdate、getdate等日期时间函数操作详解
Mar 11 PHP
php在线代理转向代码
May 05 PHP
php网站地图生成类示例
Jan 13 PHP
小谈php正则提取图片地址
Mar 27 PHP
php一行代码获取文件后缀名实例分析
Nov 12 PHP
PHP SPL标准库之SplFixedArray使用实例
May 12 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
PHP获取对象属性的三种方法实例分析
Jan 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
php中使用url传递数组的方法
2015/02/11 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
input 高级限制级用法
2009/03/26 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
Python3实现购物车功能
2018/04/18 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
python程序如何进行保存
2020/07/03 Python
基于Python实现粒子滤波效果
2020/12/01 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
python opencv肤色检测的实现示例
2020/12/21 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
实习生体会的自我评价范文
2013/11/28 职场文书
校班主任推荐信范文
2013/12/03 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
质量安全标语
2014/06/07 职场文书
辛亥革命观后感
2015/06/02 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP