香港高速VIP云机房火爆上线啦!无需备案,开通即用!配套《巅云自助建站系统3.0》将带给您飞一般的可视化拖拽建站体验,欢迎免费体验。

建站专题

把从SQL中取出的数据转化成XMl格式

一佰互联网站开发设计(www.yinxi.net) 发布日期 2019-05-01 19:09:03 浏览数: 21

使用了php的PEAR和DB<?php// +----------------------------------------------------------------------+// | PHP version 4.0                                                      |// +----------------------------------------------------------------------+// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group             |// +----------------------------------------------------------------------+// | This source file is subject to version 2.0 of the PHP license,       |// | that is bundled with this package in the file LICENSE, and is        |// | available at through the world-wide-web at                           |// | http://www.php.net/license/2_02.txt.                                 |// | If you did not receive a copy of the PHP license and are unable to   |// | obtain it through the world-wide-web, please send a note to          |// | license@php.net so we can mail you a copy immediately.               |// +----------------------------------------------------------------------+// | Authors: Christian Stocker <chregu@phant.ch>                         |// +----------------------------------------------------------------------+//// $Id: sql2xml.php,v 1.59 2001/11/13 10:54:02 chregu Exp $/*** This class takes a PEAR::DB-Result Object, a sql-query-string or an array*  and returns a xml-representation of it.** TODO*   -encoding etc, options for header*   -ERROR CHECKING** Usage example** include_once ("DB.php");* include_once("XML/sql2xml.php");* $db = DB::connect("mysql://root@localhost/xmltest");* $sql2xml = new xml_sql2xml();* //the next one is only needed, if you need others than the default* $sql2xml->setEncoding("ISO-8859-1","UTF-8");* $result = $db->query("select * from bands");* $xmlstring = $sql2xml->getXML($result);** or** include_once ("DB.php");* include_once("XML/sql2xml.php");* $sql2xml = new xml_sql2xml("mysql://root@localhost/xmltest");* $sql2xml->Add("select * from bands");* $xmlstring = $sql2xml->getXML();** More documentation and a tutorial/how-to can be found at*   http://php.chregu.tv/sql2xml** @author   Christian Stocker <chregu@bitflux.ch>* @version  $Id: sql2xml.php,v 1.59 2001/11/13 10:54:02 chregu Exp $* @package  XML*/class XML_sql2xml {    /**    * If joined-tables should be output nested.    *  Means, if you have joined two or more queries, the later    *   specified tables will be nested within the result of the former    *   table.    *   Works at the moment only with mysql automagically. For other RDBMS    *   you have to provide your table-relations by hand (see user_tableinfo)    *    * @var  boolean    * @see  $user_tableinfo, doSql2Xml(), doArray2Xml();    */    var $nested = True;    /**    * Name of the tag element for resultsets    *    * @var  string    * @see  insertNewResult()    */    var $tagNameResult = "result";    /**    * Name of the tag element for rows    *    * @var  string    * @see  insertNewRow()    */    var $tagNameRow = "row";    /**    *    * @var   object PEAR::DB    * @access private    */    var $db = Null;    /**    * Options to be used in extended Classes (for example in sql2xml_ext).    * They are passed with SetOptions as an array (arrary("user_options" = array());    *  and can then be accessed with $this->user_options["bla"] from your    *  extended classes for additional features.    *  This array is not use in this base class, it"s only for passing easy parameters    *  to extended classes.    *    * @var      array    */    var $user_options = array();    /**    * The DomDocument Object to be used in the whole class    *    * @var      object  DomDocument    * @access    private    */    var $xmldoc;    /**    * The Root of the domxml object    * I"m not sure, if we need this as a class variable....    * could be replaced by domxml_root($this->xmldoc);    *    * @var      object DomNode    * @access    private    */    var $xmlroot;    /**    * This array is used to give the structure of your database to the class.    *  It"s especially useful, if you don"t use mysql, since other RDBMS than    *  mysql are not able at the moment to provide the right information about    *  your database structure within the query. And if you have more than 2    *  tables joined in the sql it"s also not possible for mysql to find out    *  your real relations.    *  The parameters are the same as in fieldInfo from the PEAR::DB and some    *   additional ones. Here they come:    *  From PEAR::DB->fieldinfo:    *    *    $tableInfo[$i]["table"]    : the table, which field #$i belongs to.    *           for some rdbms/comples queries and with arrays, it"s impossible    *           to find out to which table the field actually belongs. You can    *           specify it here more accurate. Or if you want, that one fields    *           belongs to another table, than it actually says (yes, there"s    *           use for that, see the upcoming tutorial ...)    *    *    $tableInfo[$i]["name"]     : the name of field #$i. if you want another    *           name for the tag, than the query or your array provides, assign    *           it here.    *    *   Additional info    *     $tableInfo["parent_key"][$table]  : index of the parent key for $table.    *           this is the field, where the programm looks for changes, if this    *           field changes, it assumes, that we need a new "rowset" in the    *           parent table.    *    *     $tableInfo["parent_table"][$table]: name of the parent table for $table.    *    * @var      array    * @access    private    */    var $user_tableInfo = array();    /**    * the encoding type, the input from the db has    */    var $encoding_from  = "ISO-8859-1";    /**    * the encoding type, the output in the xml should have    * (note that domxml at the moment only support UTF-8, or at least it looks like)    */    var $encoding_to = "gb2312";    var $tagname = "tagname";    /**    * Constructor    * The Constructor can take a Pear::DB "data source name" (eg.    *  "mysql://user:passwd@localhost/dbname") and will then connect    *  to the DB, or a PEAR::DB object link, if you already connected    *  the db before.    "  If you provide nothing as $dsn, you only can later add stuff with    *   a pear::db-resultset or as an array. providing sql-strings will    *   not work.    * the $root param is used, if you want to provide another name for your    *  root-tag than "root". if you give an empty string (""), there will be no    *  root element created here, but only when you add a resultset/array/sql-string.    *  And the first tag of this result is used as the root tag.    *    * @param  mixed $dsn    PEAR::DB "data source name" or object DB object    * @param  string $root  the name of the xml-doc root element.    * @access   public    */    function XML_sql2xml ($dsn = Null, $root = "root") {        // if it"s a string, then it must be a dsn-identifier;        if (is_string($dsn))        {            include_once ("DB.php");            $this->db = DB::Connect($dsn);            if (DB::isError($this->db))            {                print "The given dsn for XML_sql2xml was not valid in file ".__FILE__." at line ".__LINE__."<br>";                return new DB_Error($this->db->code,PEAR_ERROR_DIE);            }        }        elseif (is_object($dsn) && DB::isError($dsn))        {            print "The given param for XML_sql2xml was not valid in file ".__FILE__." at line ".__LINE__."<br>";            return new DB_Error($dsn->code,PEAR_ERROR_DIE);        }        // if parent class is db_common, then it"s already a connected identifier        elseif (get_parent_class($dsn) == "db_common")        {            $this->db = $dsn;        }        $this->xmldoc = domxml_new_xmldoc("1.0");        //oehm, seems not to work, unfortunately.... does anybody know a solution?        $this->xmldoc->encoding = $this->encoding_to;                if ($root) {            $this->xmlroot = $this->xmldoc->add_root($root);            //PHP 4.0.6 had $root->name as tagname, check for that here...            if (!isset($this->xmlroot->{$this->tagname}))            {                $this->tagname = "name";            }        }    }    /**    * General method for adding new resultsets to the xml-object    *  Give a sql-query-string, a pear::db_result object or an array as    *  input parameter, and the method calls the appropriate method for this    *  input and adds this to $this->xmldoc    *    * @param    string sql-string, or object db_result, or array    * @param    mixed additional parameters for the following functions    * @access   public    * @see      addResult(), addSql(), addArray(), addXmlFile()    */    function add ($resultset, $params = Null)    {        // if string, then it"s a query, a xml-file or a xml-string...        if (is_string($resultset)) {            if (preg_match("/.xml$/",$resultset)) {                $this->AddXmlFile($resultset,$params);            }            elseif (preg_match("/.*select.*from.*/i" ,  $resultset)) {                $this->AddSql($resultset);            }            else {                $this->AddXmlString($resultset);            }        }        // if array, then it"s an array...        elseif (is_array($resultset)) {            $this->AddArray($resultset);        }        if (get_class($resultset) == "db_result") {            $this->AddResult($resultset);        }    }    /**    * Adds the content of a xml-file to $this->xmldoc, on the same level    * as a normal resultset (mostly just below <root>)    *    * @param    string filename    * @param    mixed xpath  either a string with the xpath expression or an array with "xpath"=>xpath expression  and "root"=tag/subtag/etc, which are the tags to be inserted before the result    * @access   public    * @see      doXmlString2Xml()    */    function addXmlFile($file,$xpath = Null)    {        $fd = fopen( $file, "r" );        $content = fread( $fd, filesize( $file ) );        fclose( $fd );        $this->doXmlString2Xml($content,$xpath);    }    /**    * Adds the content of a xml-string to $this->xmldoc, on the same level    * as a normal resultset (mostly just below <root>)    *    * @param    string xml    * @param    mixed xpath  either a string with the xpath expression or an array with "xpath"=>xpath expression  and "root"=tag/subtag/etc, which are the tags to be inserted before the result    * @access   public    * @see      doXmlString2Xml()    */
一佰互联是全国知名建站品牌服务商,我们有九年网站建设、网站制作、网页设计、php开发和域名注册及虚拟主机服务经验,提供的自助建站服务更是全国有名。近年来还整合团队优势自主开发了可视化多用户”巅云建站系统“3.0平台版,拖拽排版网站制作设计,轻松实现pc站、手机微网站、小程序、APP一体化全网营销网站建设 ,已成功的为全国上百家网络公司提供自助建站平台搭建服务。

相关新闻more

26
04月
PHP二维数组去重算法

需求现在有下面一组二维数组:array(8) { [0]=> array(2) { ["name"]=> string(4)... >>详情

26
04月
php实现36进制与10进制转换功能示例

本文实例讲述了php实现36进制与10进制转换功能。分享给大家供大家参考,具体如下:/** * @desc im:十进制数转换成三十六机制数... >>详情

14
05月
seo排名教程_巅云建站

ta charset="UTF-8"> seo排名教程_巅云建站 a:hover, a:focus,.post-like.acti... >>详情

17
04月
31家网站传播谣言被关停 暂停抽屉网移动端服

据新华社北京7月17日电,17日从国家互联网信息办公室获悉,国家互联网信息办会同有关部门依法对一批传播谣言的互联网站进行查处,31家谣言信息... >>详情

营业执照. cdn加速服务 备案系统认证 网络安全协会 我们的支付方式AAA认证
上海 北京 深圳 广州 天津 杭州 南京 武汉 成都 沈阳 大连 长沙 济南 青岛 苏州 福州 无锡 哈尔滨 宁波 重庆 大庆 厦门 西安 长春 珠海 郑州 海口 昆明 太原 石家庄 温州 合肥 乌鲁木齐 南宁 南通 合肥 兰州 呼和浩特 贵阳 烟台 秦皇岛 包头 唐山 银川 汕头 连云港 威海 西宁 湛江 北海 万州 涪陵 长寿 黔江 永川 丰都 忠县 江津 南川 开县 云阳 万盛 梁平 垫江 巫山 城口 建站宝盒 免费建站 门户网站建设 微信网站 手机网站 门户网站制作

7x24小时服务电话:18581389571 传真:023-85725751 免费建站交流群:236412099 139947842(自助建站交流) E-Mail:post@yinxi.net 网站投诉:
重庆楚捷科技有限公司 一佰互联©版权所有 自助建站(www.yinxi.net,Inc.) 2001-2020 All Rights Reserved 本站程序受法律保护,网站法律顾问:ITLAW-庄毅雄律师
中华人民共和国信息产业部网站备案号:渝ICP备12000592号