ホームページ  >  記事  >  バックエンド開発  >  PHP XMLおよびJSONデータ生成インターフェース

PHP XMLおよびJSONデータ生成インターフェース

WBOY
WBOYオリジナル
2016-06-23 13:39:09821ブラウズ

<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 データを返します


< ;kewin>


&lt; data_info&gt;&lt;/last_modify&gt;&lt;! "2">

< ;! [CDATA[4]]>

< ;counts> ;







声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。