<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>