加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 00:10:50 所属栏目:百科 来源:网络整理
导读:今天主要写一下XML方式封装通信接口的代码实现,XML的通信接口编写起来明显要比json的复杂一些,不过道理很简单,无非就是拼接成一个xml字符串输出,接着昨天的代码继续写。 ?phpclassResponse{/************************************返回json格式数据*$para

今天主要写一下XML方式封装通信接口的代码实现,XML的通信接口编写起来明显要比json的复杂一些,不过道理很简单,无非就是拼接成一个xml字符串输出,接着昨天的代码继续写。

<?php

classResponse{
	
	/***********************************
	*	返回json格式数据
	*	$param	integer	$code
	*	$param	string	$message
	*	$param	array	$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格式数据
	*	$param	integer	$code
	*	$param	string	$message
	*	$param	array	$data
	*	returnjson
	*
	******************************/
	publicstaticfunctionxml($code,$data=array()){

		//做出一个验证,如果不是数字,就返回空
		if(!is_numeric($code)){
			return'';
		}

		//把穿进来的三个值,组装成一个数组
		$result	=	array(
			'code'		=>	$code,'data'		=>	$data	
		);

		//便于浏览器输出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}>";
		}
		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);
/*
	打印出来的样子
	<root>
		<code>200</code>
		<message>success</message>
		<data>
			<name>学PHP的小蚂蚁</name>
			<age>27</age>
			<sex>male</sex>
			<url>博客http://my.oschina.net/woshixiaomayi/blog</url>
			<like>
				<eat>apple</eat>
				<drink>milk</drink>
				<itemid="0">happy</item>
				<itemid="1">lucky</item>
			</like>
		</data>
</root>
*/

?>

其中有两点需要注意:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读