php xml和json数据产生接口
程序员文章站
2022-04-01 14:02:41
...
/** * 返回结果集 * * @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('' . 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数据
上一篇: Html5 语法与规则简要概述