小螞蟻學習APP接口開發(2)—— XML方式封裝通訊接口

    今天主要寫一下XML方式封裝通訊接口的代碼實現,XML的通訊接口編寫起來明顯要比json的複雜一些,不過道理很簡單,無非就是拼接成一個xml字符串輸出,接着昨天的代碼繼續寫。php

<?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>
*/

 ?>

其中有兩點須要注意:json

  1.     在拼接xml字符串的時候,若是數據是一個多維的數組,這時候就須要遞歸遍歷的方法來拼接字符串。
    數組

  2.     xml的節點名稱不能爲數字,因此採起了一個方法<item id='12'>的方法來代替,這個能夠自定義的,根據本身須要定義。瀏覽器

相關文章
相關標籤/搜索