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执行速度全攻略(下)
Oct 09 PHP
也谈 PHP 和 MYSQL
Oct 09 PHP
php防止SQL注入详解及防范
Nov 12 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
php实现约瑟夫问题的方法小结
Mar 23 PHP
php实现购物车功能(上)
Jul 23 PHP
php读取torrent种子文件内容的方法(测试可用)
May 03 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
Nov 17 PHP
PHP培训要多少钱
Jun 06 PHP
PHP通过curl获取接口URL的数据方法
May 31 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 PHP
tp5 实现列表数据根据状态排序
Oct 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正则的Unknown Modifier错误解决方法
2010/03/02 PHP
php图片添加水印例子
2016/07/20 PHP
超详细的javascript数组方法汇总
2015/11/21 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
详解python中的文件与目录操作
2017/07/11 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
Python全栈之列表数据类型详解
2019/10/01 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
python里反向传播算法详解
2020/11/22 Python
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
数据库笔试题
2013/05/09 面试题
几道Web/Ajax的面试题
2016/11/05 面试题
求职信写作要突出重点
2014/01/01 职场文书
研究生毕业鉴定
2014/01/29 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
大学班级计划书
2014/04/29 职场文书
文体活动总结范文
2014/05/05 职场文书
民生工作实施方案
2014/05/31 职场文书
建筑工地大门标语
2014/06/18 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
小程序实现筛子抽奖
2021/05/26 Javascript
Python自动化爬取天眼查数据的实现
2021/06/15 Python
spring boot中nativeQuery的用法
2021/07/26 Java/Android
Android Rxjava3 使用场景详解
2022/04/07 Java/Android
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers