热搜:NVER node 开发 php

php xml和json数据产生接口

2024-08-10 22:10:01
php xml和json数据产生接口

/** *  返回结果集 * *  @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='';    _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.='';                $xml.=_array2xml($v,$xml);                $xml.='';            }else{                $xml.='';                $xml.=_array2xml($v,$xml);                $xml.=''.$k.'>';            }        }    }elseif(is_numeric($data)){        $xml.=$data;    }elseif(is_string($data)){        $xml.='';    }}

调用方法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"?>