小蚂蚁学习APP接口开发2—— XML方式封装通信接口

<?PHP
classResponse{
/***********************************
*返回json格式数据
*$paraminteger$code
*$paramstring$message
*$paramarray$data
*returnjson
*
******************************/
publicstaticfunctionjson($code,$message='',$data=array()){
//做出一个验证,如果不是数字,就返回空
if(!is_numeric($code)){
return'';
}

//把穿进来的三个值,组装成一个数组
$result=array(
'code'=>$code,'message'=>$message,'data'=>$data
);
//json_encode()把数组转化成json格式输出
echojson_encode($result);
exit;
}
/***********************************
*返回xml格式数据
*$paraminteger$code
*$paramstring$message
*$paramarray$data
*returnxml
*
******************************/
publicstaticfunctionxml($code,'data'=>$data
);
//json_encode()把数组转化成json格式输出
//便于浏览器输出xml格式文件
header('content-type:text/xml');
//拼接xml
$xml.="<?xmlversion='1.0'encoding='UTF-8'?>";
$xml.='<root>';
$xml.=self::xmlToEncode($result);//获取组装好的xml数据
$xml.='</root>';
echo$xml;
exit;
}
publicstaticfunctionxmlToEncode($arr){
//准备一个接收的空数组
$xml='';
//将这个数组的键,作为节点名称,值作为内容
foreach($arras$key=>$value){
/*约定一个规则,如果键是数字的话,格式为<itemid='5'>aaa</item>*/
if(is_numeric($key)){
$attr="id='{$key}'";//属性的值需要带上引号,不然报错
$key='item';
}

$xml.="<{$key}{$attr}>";
//如果$value的值是个多维数组的话,需要递归遍历
$xml.=is_array($value)?self::xmlToEncode($value):$value;
$xml.="</{$key}>";
}
ob_clean();
return$xml;
}
}
$array=array(
'name'=>'学PHP的小蚂蚁','age'=>'27','sex'=>'male','url'=>'博客http://my.oschina.net/woshixiaomayi/blog','like'=>array(
'eat'=>'apple','drink'=>'milk','happy','lucky'
)
);
Response::xml(200,'success',$array);
?>

其中有两点需要注意:

  1. 在拼接xml字符串的时候,如果数据是一个多维的数组,这时候就需要递归遍历的方法来拼接字符串。

  2. xml的节点名称不能为数字,所以采取了一个方法<item id='12'>的方法来代替,这个可以自定义的,根据自己需要定义。

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念