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 Static关键字实用方法
Jun 04 PHP
PHP常用开发函数解析之数组篇[未完结]
Jul 30 PHP
zf框架db类的分页示例分享
Mar 14 PHP
PHP mkdir()无写权限的问题解决方法
Jun 19 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
Nov 15 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 PHP
php_pdo 预处理语句详解
Nov 21 PHP
PHP count()函数讲解
Feb 03 PHP
PHP中“=&gt;
Mar 01 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 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
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
JavaScript 数组运用实现代码
2010/04/13 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
小程序实现录音功能
2020/09/22 Javascript
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
Python 实现链表实例代码
2017/04/07 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
浅谈Python 函数式编程
2020/06/20 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
比较一下entity bean和session bean
2013/12/27 面试题
秋季开学典礼主持词
2014/03/19 职场文书
班主任个人工作反思
2014/04/28 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
协议书范文
2015/01/27 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python