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 相关文章推荐
文件上传类
Oct 09 PHP
PHP字符串 ==比较运算符的副作用
Oct 21 PHP
探讨:使用XMLSerialize 序列化与反序列化
Jun 08 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
Jun 10 PHP
php中switch与ifelse的效率区别及适用情况分析
Feb 12 PHP
Laravel 5框架学习之用户认证
Apr 09 PHP
thinkphp如何获取客户端IP
Nov 03 PHP
PHP实现批量上传单个文件
Dec 29 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
PHP中$GLOBALS与global的区别详解
Mar 21 PHP
PHP操作Redis常用命令的实例详解
Dec 23 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
初学CAKEPHP 基础教程
2009/11/02 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
python 多线程实现检测服务器在线情况
2015/11/25 Python
python中input()与raw_input()的区别分析
2016/02/27 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
公民授权委托书
2014/10/15 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
春节晚会开场白
2015/05/29 职场文书
监护人证明
2015/06/19 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
高中物理教学反思
2016/02/19 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
Golang ort 中的sortInts 方法
2022/04/24 Golang
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技