文档章节

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

嗜学如命的小蚂蚁
 嗜学如命的小蚂蚁
发布于 2015/10/14 08:59
字数 616
阅读 461
收藏 2

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

<?php 

class Response{
	
	/***********************************
	*	返回json格式数据
	*	$param 	integer 	$code
	*	$param 	string  	$message
	*	$param 	array   	$data
	*	return json
	*
	******************************/
	public static function json($code,$message='',$data=array()){
		
		//做出一个验证,如果不是数字,就返回空
		if(!is_numeric($code)){
			return '';
		}

		//把穿进来的三个值,组装成一个数组
		$result	=	array(
			'code'		=>	$code,
			'message'	=>	$message,
			'data'		=>	$data	
		);
		//json_encode()把数组转化成json格式输出	
		echo json_encode($result);
		exit;
	}

	/***********************************
	*	返回xml格式数据
	*	$param 	integer 	$code
	*	$param 	string  	$message
	*	$param 	array   	$data
	*	return json
	*
	******************************/
	public static function xml($code,$message='',$data=array()){

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

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

		//便于浏览器输出xml格式文件	
		header('content-type:text/xml');
		//拼接xml
		$xml.="<?xml version='1.0' encoding='UTF-8' ?>";
		$xml.='<root>';
		$xml.=self::xmlToEncode($result);	//获取组装好的xml数据
		$xml.='</root>';

		echo $xml;
		exit;
	}

	public static function xmlToEncode($arr){
		//准备一个接收的空数组
		$xml='';
		//将这个数组的键,作为节点名称,值作为内容
		foreach ($arr as $key => $value) {
			/*约定一个规则,如果键是数字的话,格式为<item id='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>
				<item id="0">happy</item>
				<item id="1">lucky</item>
			</like>
		</data>
</root>
*/

 ?>

其中有两点需要注意:

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

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

© 著作权归作者所有

共有 人打赏支持
嗜学如命的小蚂蚁
粉丝 143
博文 161
码字总数 100864
作品 0
郑州
程序员
私信 提问
用PHP写APP接口,现在我也在学习中。。。

现在app这么火,作为一个phper,应该知道如何写app的接口,下面做一个讲解。Index: 第1章 APP接口简介 - 第2章 封装通信接口方法 2-1 JSON方式封装通信接口 (14:39) 2-2 PHP生成XML数据 (12:...

YSail
07/05
0
0
小蚂蚁学习APP接口开发(1)—— json方式封装通信接口

前段时间,和公司的一个安卓程序员配合开发一款简单的APP,因为第一次写,时间也紧张,总感觉写的不是那么的完美,趁着这段时间好好总结一下经验。 对于APP的请求,服务器返回的数据类型一般...

嗜学如命的小蚂蚁
2015/10/13
985
0
小蚂蚁学习APP接口开发(6)—— APP接口实例——首页数据接口的案例实现

读取数据的三种方式 读取数据库方式开发首页接口 从数据库获取数据——》封装——》生成接口数 优点:数据时效性比较高的系统 2. 读取缓存方式开发首页接口(用途非常广) 从数据库获取信息—...

嗜学如命的小蚂蚁
2015/10/18
805
0
Android 基于注解IOC组件化/模块化的架构实践

当前参与的项目历史也很久远,第一行代码据说是写于2014年的某一天,那时Android用的ide还是Eclipse、那时Android还没有很好的架构指导(mvp、mvvm)、那时Android最新的版本是5.0、那时And...

Tamic
05/13
0
0
QCon技术干货:个推基于Docker和Kubernetes的微服务实践

2016年伊始,Docker无比兴盛,如今Kubernetes万人瞩目。在这个无比需要创新与速度的时代,由容器、微服务、DevOps构成的云原生席卷整个IT界。在近期举办的QCon全球软件开发大会上,个推应用平...

个推君
10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

纹理与表面细节添加方法---凹凸映射

中国龙-扬科
22分钟前
0
0
20181115上课截图

小丑鱼00
30分钟前
0
0
初识css自定义属性

这算是一篇两篇文章译文的糅合体,旨在帮助理解css自定义属性。 今天,CSS预处理器是Web开发的标准。 预处理器的一个主要优点是它们使您能够使用变量, 这有助于您避免复制和粘贴代码,并简化...

嫣然丫丫丫
39分钟前
1
0
JAVA基础--session共享的前生今世

session共享的前生今世 Session及cookie基本概念及生命周期 session   当浏览器发起一个新的HTTP请求时,WEB服务端会主动创建一个session.并分配一个sessionID作为服务端识别客户端的一个标...

spinachgit
48分钟前
0
0
Deepin Linux 下把 UC 缓存视频变为 MP4 文件

本文是利用 FFMPEG 的功能实现的。 生成 file.txt文件 因为缓存文件都是数字,且文件夹内还有其他文件,包括 index.* 的文件。 $ ls -1v --hide=file.txt --hide=index* > file.txt 解释 ls...

不避风云
49分钟前
0
2

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部