PHP 开发 APP 接口--XML篇
Posted L1230205
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 开发 APP 接口--XML篇相关的知识,希望对你有一定的参考价值。
1.php 生成 XML 数据
① 拼接字符串
② 使用系统类(DomDocument,XMLWriter,SimpleXML)
例1 使用 PHP 系统类中的 DomDocument 类:
<?php $dom = new DomDocument(\'1.0\',\'utf-8\'); $element = $dom->createElement(\'test\',\'This is a root element\'); $dom->appendChild($element); echo $dom->saveXML();
页面输出
This is a root element
查看源代码显示:
<?xml version="1.0" encoding="utf-8"?> <test>This is a root element</test>
例2 拼接字符串
//修改 http 头信息 header("Content-Type:text/xml"); //xml头信息 $xml = "<?xml version=\'1.0\' encoding=\'utf-8\'?>\\n"; //根节点开始标签 $xml .= "<root>\\n"; //code $xml .= "<code>200</code>\\n"; //message $xml .= "<message>数据返回成功</message>\\n"; //data $xml .= "<data>\\n"; $xml .= "<id>1</id>\\n"; $xml .= "<name>John</name>\\n"; $xml .= "</data>\\n"; //根节点结束标签 $xml .= "</root>"; echo $xml; exit();
页面输出:
This XML file does not appear to have any style information associated with it. The document tree is shown below. <root> <code>200</code> <message>数据返回成功</message> <data> <id>1</id> <name>John</name> </data> </root>
http 响应头信息:
2.XML 方式封装通信接口
<?php class Response{ /** * 按 xml 方式输出通信数据 * @param integer $code 状态码 * @param string $message 提示信息 * @param array $data 数据 * return string */ public static function xml($code,$message,$data){ if(!is_numeric($code)){ return \'\'; } $result = array( \'code\' => $code, \'message\' => $message, \'data\' => $data ); //修改 http 头信息 header("Content-Type:text/xml"); //xml头信息 $xml = "<?xml version=\'1.0\' encoding=\'utf-8\'?>"; //根节点开始标签 $xml .= "<root>"; $xml .= self::xmlToEncode($result); //根节点结束标签 $xml .= "</root>"; echo $xml; exit(); } //解析$result至xml public static function xmlToEncode($data){ $xml = $attr = ""; foreach($data as $k=>$v){ //如果$k是数字(data(code,message,data中的data)数据里面还含有索引数组),要进行如下判断 if(is_numeric($k)){ $attr = "id=\'{$k}\'"; $k = \'item \'; } $xml .= "<{$k} {$attr}>"; //如果$v是数组,则递归调用该方法 if(is_array($v)){ $xml .= self::xmlToEncode($v); }else{ $xml .= $v; } $xml .= "</{$k}>"; } return $xml; } }
调用该页面 test.php
$data 第一种情况:
<?php require \'response.php\'; $data = array( \'id\'=>1, \'name\'=>\'Mary\' ); Response::xml(200,\'数据返回成功\',$data);
页面输出:
This XML file does not appear to have any style information associated with it. The document tree is shown below. <root> <code>200</code> <message>数据返回成功</message> <data> <id>1</id> <name>Mary</name> </data> </root>
$data 第二种情况
<?php require \'response.php\'; $data = array( \'id\'=>1, \'name\'=>\'Mary\', \'type\'=>array(1,3,6) //<0>1</0><1>3</1><2>6</2> => <item id="0">1</item>... ); Response::xml(200,\'数据返回成功\',$data);
页面输出:
This XML file does not appear to have any style information associated with it. The document tree is shown below. <root> <code>200</code> <message>数据返回成功</message> <data> <id>1</id> <name>Mary</name> <type> <item id="0">1</item> <item id="1">3</item> <item id="2">6</item> </type> </data> </root>
$data 第三中情况:
<?php require \'response.php\'; $data = array( \'id\'=>1, \'name\'=>\'Mary\', \'type\'=>array(\'a\'=>1,\'b\'=>3,\'c\'=>6) ); Response::xml(200,\'数据返回成功\',$data);
页面输出:
This XML file does not appear to have any style information associated with it. The document tree is shown below. <root> <code>200</code> <message>数据返回成功</message> <data> <id>1</id> <name>Mary</name> <type> <a>1</a> <b>3</b> <c>6</c> </type> </data> </root>
以上是关于PHP 开发 APP 接口--XML篇的主要内容,如果未能解决你的问题,请参考以下文章