php xml和json数据产生接口

<span style="font-size:18px;">/**
 *  返回结果集
 *
 *  @param   mixed      $info       返回的有效数据集或是错误说明
 *  @param   string     $msg        为空或是错误类型代号
 *  @param   string     $result     请求成功或是失败的标识
 *  @param   int        $post       1为xml方式,2为json方式
 *
 */
function getData($info, $msg = '', $post, $result = 'success')
{
    /* 分为xml和json两种方式 */
    $data_arr = array('result'=>$result, 'msg'=>$msg, 'info'=>$info);
    $data_arr = to_utf8_iconv($data_arr);  //确保传递的编码为UTF-8

    if ($post == 1)
    {
        /* xml方式 */
        if (class_exists('DOMDocument'))
        {
            $doc=new DOMDocument('1.0','UTF-8');
            $doc->formatOutput=true;

            $shopex=$doc->createElement('kewin');
            $doc->appendChild($shopex);

            $result=$doc->createElement('result');
            $shopex->appendChild($result);
            $result->appendChild($doc->createCDATASection($data_arr['result']));

            $msg=$doc->createElement('msg');
            $shopex->appendChild($msg);
            $msg->appendChild($doc->createCDATASection($data_arr['msg']));

            $info=$doc->createElement('info');
            $shopex->appendChild($info);

            create_tree($doc, $info, $data_arr['info']);
            die($doc->saveXML());
        }

        die('<?xml version="1.0" encoding="UTF-8"?>' . array2xml($data_arr)) ;
    }
    else
    {
        /* json方式 */
        $json  = new JSON;
        die($json->encode($data_arr));    //把生成的返回字符串打印出来
    }
}

/**
 *  循环生成xml节点
 *
 *  @param  handle      $doc            xml实例句柄
 *  @param  handle      $top            当前父节点
 *  @param  array       $info_arr       需要解析的数组
 *  @param  boolean     $have_item      是否是数据数组,是则需要在每条数据上加item父节点
 *
 */
function create_tree($doc, $top, $info_arr, $have_item = false)
{
    if (is_array($info_arr))
    {
        foreach ($info_arr as $key => $val)
        {
            if (is_array($val))
            {
                if ($have_item == false)
                {
                    $data_info=$doc->createElement('data_info');
                    $top->appendChild($data_info);
                    create_tree($doc, $data_info, $val, true);
                }
                else
                {
                    $item=$doc->createElement('item');
                    $top->appendChild($item);
                    $key_code = $doc->createAttribute('key');
                    $item->appendChild($key_code);
                    $key_code->appendChild($doc->createTextNode($key));
                    create_tree($doc, $item, $val);
                }
            }
            else
            {
                $text_code=$doc->createElement($key);
                $top->appendChild($text_code);
                if (is_string($val))
                {
                    $text_code->appendChild($doc->createCDATASection($val));
                }
                else
                {
                    $text_code->appendChild($doc->createTextNode($val));
                }
            }
        }
    }
    else
    {
        $top->appendChild($doc->createCDATASection($info_arr));
    }
}

function array2xml($data,$root='shopex'){
    $xml='<'.$root.'>';
    _array2xml($data,$xml);
    $xml.='</'.$root.'>';
    return $xml;
}

function _array2xml(&$data,&$xml){
    if(is_array($data)){
        foreach($data as $k=>$v){
            if(is_numeric($k)){
                $xml.='<item key="' . $k . '">';
                $xml.=_array2xml($v,$xml);
                $xml.='</item>';
            }else{
                $xml.='<'.$k.'>';
                $xml.=_array2xml($v,$xml);
                $xml.='</'.$k.'>';
            }
        }
    }elseif(is_numeric($data)){
        $xml.=$data;
    }elseif(is_string($data)){
        $xml.='<![CDATA['.$data.']]>';
    }
}
</span>

调用方法getData()传入不同的参数可分别生成xml数据或json格式数据

getData($data, ‘‘, ‘json‘);  //返回json数据

{"result":"success","msg":"","info":{"data_info":[{"goods_id":"1","last_modify":"1423937979"},{"goods_id":"2","last_modify":"1425595831"},{"goods_id":"3","last_modify":"1423937959"},{"goods_id":"4","last_modify":"1423942862"}],"counts":"4"}}

getData($data, ‘‘, ‘xml‘);  //返回xml数据

<?xml version="1.0" encoding="UTF-8"?>

<kewin>

<result><![CDATA[success]]></result>

<msg><![CDATA[]]></msg>

<info>

<data_info>

<item key="0">

<goods_id><![CDATA[1]]></goods_id>

<last_modify><![CDATA[1423937979]]></last_modify>

</item>

<item key="1">

<goods_id><![CDATA[2]]></goods_id>

<last_modify><![CDATA[1425595831]]></last_modify>

</item>

<item key="2">

<goods_id><![CDATA[3]]></goods_id>

<last_modify><![CDATA[1423937959]]></last_modify>

</item>

<item key="3">

<goods_id><![CDATA[4]]></goods_id>

<last_modify><![CDATA[1423942862]]></last_modify>

</item>

</data_info>

<counts><![CDATA[4]]></counts>

</info>

</kewin>

时间: 2024-10-07 15:18:26

php xml和json数据产生接口的相关文章

支持XML和JSON数据的图表控件FusionCharts XT

FusionCharts XT是一款功能强大的图表控件,同时支持HTML5和Flash,可以用于PCs, Macs, iPads, iPhones ,支持XML和JSON数据,可以帮您为您的Web应用创建交互式的.数据驱动的图表.仪表盘和地图.它具有智能化.用户友好和创新等特点,可以将单调的数据转化为栩栩如生的图像,从而使您的Web应用更加的生动.它可以完美的应用于web应用软件.管理仪表板.分析学.展示和决策支持系统,可以与诸如ASP.ASP.NET.PHP.JSP.ColdFusion和Ru

使用 AFNetworking 进行 XML 和 JSON 数据请求

(1)XML 数据请求 使用 AFNetworking 中的 AFHTTPRequestOperation 和 AFXMLParserResponseSerializer,另外结合第三方框架 XMLDictionary 进行数据转换 使用 XMLDictionary 的好处:有效避免自行实现 NSXMLParserDelegate 委托代理协议方法来进行繁琐的数据拼凑解析 (2)JSON 数据请求 使用 AFNetworking 中的 AFHTTPRequestOperation 或 AFHTT

使用solr将CSV/XML/DB/JSON数据发布为Rest Service

Download http://lucene.apache.org/solr/downloads.html Apache Solr入门基础——Windows下安装与配置 https://blog.csdn.net/wsxsxz_/article/details/62048595 Start $ cd E:\01_SOFT\Java\solr-8.2.0\bin $ solr start solr start –p <端口号> 单机版启动solr服务 solr restart –p <端口

ios解析XML和json数据

解析的基本概念所谓“解析”:从事先规定好的格式串中提取数据解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据iOS开发常见的解析:XML解析.JSON解析 一.XML数据结构XML数据结构基本概念XML:Extensible Markup language (可扩展标记语言),主流格式之一,可以用来存储和传输数据格式之一,可以用来存储和传输数据 XML数据格式的功能1.数据交换2.内容管理3.用作配置文件 XML数据结构的语法1.声明2.节点使用一对标签表示3.根

XML、JSON数据解析

解析: XML解析 XML:可扩展性标记语言   主流数据格式之一 功能:数据交换 .web服务 .内容管理 . 用作配置文件(重点) SAX 解析-->逐行解析(采用协议回调机制) 实现协议NSXMLParserDelegate - (void)startParse { //xml解析:逐行解析 //从文件列表中读取数据 //1.获得文件路径 NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"Student&q

通过form发送xml、json数据

The best way I can think of is to intercept the form-submit action, and convert the form details into XML format, and then submit that to the server. There are many ways to do this, but the easiest would be to implement a solution via a framework lik

简单的XML和JSON数据的处理

一.XML格式装换成json数据格式 using System; using System.Collections.Generic; using System.Linq; using System.Web; //要使用JavaScriptSerializer需添加这个using System.Web.Script.Serialization;引用 using System.Web.Script.Serialization; using System.Web.UI; using System.We

Java-封装生成JSON数据和XML数据类

1.背景 借鉴与php中 app接口的实现(php写app接口生成xml和json数据),封装了java版的json和xml数据操作类! 2.准备 在使用之前,需要引入 json 的jar 包:点我下载 ! 这里实现了,对象转json , 对象集合转json, 对象转xml,对象集合转xml ; 3.appUtil 工具类实现 具体的实现过程,我就不解释了,一边写,一边测试!直到写成为止! 里面的 tojsonArray() 方法 没有使用,可以删除,不过想生成json数组的 ,就不需要删除了!

【.net 深呼吸】聊聊WCF服务返回XML或JSON格式数据

有时候,为了让数据可以“跨国经营”,尤其是HTTP Web有关的东东,会将数据内容以 XML 或 JSON 的格式返回,这样一来,不管客户端平台是四大文明古国,还是处于蒙昧时代的原始部落,都可以使用这些数据. 在WCF中实现将数据以XML或JSON格式返回有Y多种方法,不管你用什么方法,只要得到预期结果就好,米芾说了,笔可以八面出锋,当然了,人家指的是绘画. 这里,老周就挑两种方法来演示,仅供参考,没有考古价值,建议司马子长不要把本文收入<史记>. 第一种方法是用到 WebServiceHos