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 方式封装通信接口的更多相关文章

  1. PHP 开发 APP 接口 学习笔记与总结 - JSON 方式封装通信接口

    1.通信数据的标准格式 ( JSON ),包括: code:状态码(200,400等) message:提示信息(例如:数据返回成功.邮箱格式错误等) data:返回数据 2.JSON 方式封装通信接 ...

  2. PHP开发APP接口学习笔记

    习要点概述1.APP接口简介 2.封装通信接口方法 3.核心技术 4.APP接口实例 服务器和客户端进行接口数据通信:服务器 -->数据库|缓存 -->调用接口 -->客户端 服务器 ...

  3. PHP 开发 APP 接口 学习笔记与总结 - Redis 缓存

    Redis 可以定期将数据备份到磁盘中(持久化),同时不仅仅支持简单的key/value 类型的数据,同时还提供list,set,hash等数据结构的存储:Memcache 只是简单的key/valu ...

  4. PHP 开发 APP 接口 学习笔记与总结 - JSON 结合 XML 方式封装通信接口

    要求: 1.在一个类中封装多种数据通信方法(JSON,XML),并且只通过一个入口选择需要的数据通信格式 2.客户端开发工程师可以自行选择数据传输格式(GET 方式) response.php < ...

  5. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [2] 首页 APP 接口开发方案 ① 读取数据库方式

    方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时 ...

  6. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [5] 版本设计分析及数据表设计

    APP 版本升级以及 APP 演示 ① 版本升级分析以及数据表设计 ② 版本升级接口开发以及 APP 演示 /** * version_upgrade 版本升级信息表 */ CREATE TABLE ...

  7. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式

    以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTim ...

  8. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [7] APP 错误日志接口

    APP 上线以后可能遇到的问题: ① APP 强退 ② 数据加载失败 ③ APP 潜在问题 错误日志需要记录的内容 数据表 error_log 字段: id app_id:app 类别 id did: ...

  9. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [6] 版本升级接口开发

    判定 app 是否需要加密:通过 app 表中的 status 字段来判定,加密的字符串为 app 表中的 key 字段. 在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 dat ...

随机推荐

  1. VIM Tutorials----(updating)

    This is my first English tutorial; I hope I can help you to learn VIM. Any question send email to me ...

  2. Wcf for wp8 使用iis Express 承载Wcf服务部署发布网站(三)

    我们接下来要做的是 本地电脑当作服务器(模拟外网服务器)来承载Wcf服务程序,通过引用本地电脑ip地址访问wcf服务程序接口 http://192.168.1.123/Service1.svc 一.先 ...

  3. activity切换时的overridePendingTransition动画效 (转)

    注意,切换方法overridePendingTransition只能在startActivity和finish方法之后调用.第一个参数为第一个Activity离开时的动画,第二参数为所进入的Activ ...

  4. uva 10246(最短路变形)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28972 思路:spfa求出每个点到其余顶点的最短路(最短路上的每个 ...

  5. android 页面停几秒后跳转

      <span style="white-space:pre">      </span>//实现等待几秒后跳转,方法一 new Handler().pos ...

  6. mysql之对触发器的操作

    1. 为什么要使用触发器? 触发器与函数有些类似,都需要声明,执行.但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发,激活,从而实现执行. 当触发DELETE,INSERT,UPDA ...

  7. 5分钟上手写ECharts的第一个图表

    网址:http://echarts.baidu.com/doc/start.html 架构特性 http://echarts.baidu.com/doc/feature.html | 架构 提供商业产 ...

  8. BZOJ1807 : [Ioi2007]Pairs 彼此能听得见的动物对数

    一维的情况: 排序后维护一个单调指针即可,时间复杂度$O(n\log n)$. 二维的情况: 旋转坐标系后转化为二维数点问题,扫描线+树状数组维护即可,时间复杂度$O(n\log n)$. 三维的情况 ...

  9. [Cocos2d-x For WP8]点击移动精灵

    点击移动是游戏里面常用的操作,那么在Cocos2d-x里面可以通过setTouchEnabled(true)方法来设置接收屏幕的点击事件,然后添加ccTouchesEnded(CCSet* touch ...

  10. 使用STL map 用 string 做索引 插入删除数据

    1.代码 #include <map> #include <string> #include <stdio.h> #include <vector> # ...