为了账号安全,请及时绑定邮箱和手机立即绑定

xml输出错误

请求xml数据的时候得到这种错误:

http://img1.sycdn.imooc.com//561b532a000178c506150222.jpg

我写的Reponse.php代码:

<?php

class Response {
	const JSON = "json";
	/**
	* 按综合方式输出通信数据
	* @param integer $code 状态码
	* @param string $message 提示信息
	* @param array $data 数据
	* @param string $type 数据类型
	* return string
	*/
	public static function show($code, $message = '', $data = array(), $type = self::JSON) {
		if(!is_numeric($code)) {
			return '';
		}

		$type = isset($_GET['format']) ? $_GET['format'] : self::JSON;

		$result = array(
			'code' => $code,
			'message' => $message,
			'data' => $data,
		);

		if($type == 'json') {
			self::json($code, $message, $data);
			exit;
		} elseif($type == 'array') {
			var_dump($result);
		} elseif($type == 'xml') {
			self::xmlEncode($code, $message, $data);
			exit;
		} else {
			// TODO
		}
	}
	/**
	* 按json方式输出通信数据
	* @param integer $code 状态码
	* @param string $message 提示信息
	* @param array $data 数据
	* return string
	*/
	public static function json($code, $message = '', $data = array()) {
		
		if(!is_numeric($code)) {
			return '';
		}

		$result = array(
			'code' => $code,
			'message' => $message,
			'data' => $data
		);

		echo json_encode($result,JSON_UNESCAPED_UNICODE);
		exit;
	}

	public function xmlEncode($code, $message = '', $data = array()) {
		if(!is_numeric($code)) {
			return '';
		}

		$result = array(
			'code' => $code,
			'message' => $message,
			'data' => $data
		);

		header('Content-Type:text/xml');
		$xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
		$xml .= "<root>";
		$xml .= self::xmlToEncode($result);
		$xml .= "</root>";
		echo $xml;
	}

	public static  function xmlToEncode($result) {
		$xml = $attr = '';
		foreach($result as $key => $value) {
			if(is_numeric($key)) {
				$attr = " id='" . $key . "'";
				$key = "item";
			}
			$xml .= "<{$key}{$attr}>";
			$xml .= is_array($value) ? self::xmlToEncode($value) : $value;
			$xml .= "</{$key}>\n";
		}
		return $xml;
	}
}

test.php代码如下:

<?php
	require_once('./Response.php');
	
	$arr = array(
		'id' => 1,
		'name' => 'singwa',
		'type' => array(4,5,6),
		'test' => array(1,45,67=>array(123,'tsysa'))
		
	);
	
	Response::show(20,'sucess',$arr);
?>

审查元素:

http://img1.sycdn.imooc.com//561b54ba00013fb305150343.jpg


貌似<?xml version='1.0' encoding='UTF-8'?>之前多了一个空格,这个怎么处理?

正在回答

1 回答

检查一下php标签前后是否有空格

0 回复 有任何疑惑可以回复我~
#1

qq_索马里海盗盗首_0 提问者

非常感谢!
2015-10-14 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP开发APP接口
  • 参与学习       79185    人
  • 解答问题       599    个

APP通信接口技术,不得不掌握的法宝,学完之后你会受益良多

进入课程

xml输出错误

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信