class Response {
public static function xmlEncode($code,$message,$data = array()) {
if (!is_numeric($code)) {
return '';//如果$code传递的不是数字返回空
}
$result = array(
'code' => $code,
'message' => $message,
'data' => $data,
);
header("Content-Type:text/xml");//指定页面显示类型
$xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
$xml .= "\n";
$xml .= self::xmlToEncode($result);//$result里的data对应的是$datas数组,这时$data数组里的值不会被解析出来。这时需要递归:如果$value是数组的话,再去循环遍历一下
$xml .= "";
echo $xml;
}
//解析$result数组,把它拼装成XMl数据,然后返回给它
public static function xmlToEncode($data) {
$xml = "";//定义一个变量存储XML数据
//用foreach循环把$result遍历出来
foreach ($data as $key => $value) {
$xml .= "";//加{}是为了能识别出$key[节点]是变量
$xml .= is_array($value) ? self::xmlToEncode($value) : $value;//递归
$xml .= "{$key}>\n";
}
return $xml;
}
}
$data = array(
'id' => 1,
'name' => 'hh',
);
Response::xmlEncode(200,'success',$data);
注:如果$key=>$value中,key为数字,无法转变为XML格式中的节点名称,可采用如下方式转换:$value$item>