Yii2 输出xml格式数据的方法


Posted in PHP onMay 03, 2016

php中对xml的处理,虽然说实际开发中目前用的少了,但是难免会用到,用到的时候呢,总结起来还是稍稍有那么一丁点的麻烦。

我们来看看yii2中是怎么对xml进行处理的。会超乎你想象的简单哦。

我们以输出xml格式的数据为例。

既然是输出,必然就涉及到web请求与响应了,不熟悉的可以先去了解下HTTP协议。

yii2中支持以下几种返回格式,均可自定义配置。

HTML: implemented by yii\web\HtmlResponseFormatter.
XML: implemented by yii\web\XmlResponseFormatter.
JSON: implemented by yii\web\JsonResponseFormatter.
JSONP: implemented by yii\web\JsonResponseFormatter.
RAW: use this format if you want to send the response directly without applying any formatting.

我们就是冲着XML来的。

先来看一种简单的输出xml格式数据

public function actionTest () { 
\Yii::$app->response->format = \yii\web\Response::FORMAT_XML; 
return [ 
'message' => 'hello world', 
'code' => 100, 
]; 
}

这里我们指定了reponse响应格式 FORMAT_XML,然后访问这个test方法就可以看到页面上输出了xml类型的数据

<response> 
<message>hello world</message> 
<code>100</code> 
</response>

上面提到的方式未免有点麻烦,麻烦在配置多项的时候就不是那么方便了,我们来自己创建reponse对象试一试

public function actionTest () { 
return \Yii::createObject([ 
'class' => 'yii\web\Response', 
'format' => \yii\web\Response::FORMAT_XML, 
'formatters' => [ 
\yii\web\Response::FORMAT_XML => [ 
'class' => 'yii\web\XmlResponseFormatter', 
'rootTag' => 'urlset', //根节点 
'itemTag' => 'url', //单元 
], 
], 
'data' => [ //要输出的数据 
[ 
'loc' => 'http://********', 
], 
], 
]); 
}

为了方便接下来的说明,上面一并做了配置,可以看到我们配置了响应的格式format,单独做了些配置,包括配置根节点rootTag,单元itemTag以及数据类型。有同学注意到了,这里其实我们很简单的就实现了一个站点地图的xml格式输出。是的,就是这么简单。

PHP 相关文章推荐
session 的生命周期是多长
Oct 09 PHP
PHP脚本数据库功能详解(下)
Oct 09 PHP
SSI指令
Nov 25 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
php启动时候提示PHP startup的解决方法
May 07 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
php通过session防url攻击方法
Dec 10 PHP
php对文件进行hash运算的方法
Apr 03 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
Ajax+PHP实现的删除数据功能示例
Feb 12 PHP
php面向对象值单例模式
May 03 #PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 #PHP
Linux环境下php实现给网站截图的方法
May 03 #PHP
PHPExcel笔记, mpdf导出
May 03 #PHP
PHP实现的进度条效果详解
May 03 #PHP
php实现按天数、星期、月份查询的搜索框
May 02 #PHP
php支持断点续传、分块下载的类
May 02 #PHP
You might like
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
php中请求url的五种方法总结
2017/07/13 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
jquery的颜色选择插件实例代码
2008/10/02 Javascript
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
详解a++和++a的区别
2017/08/30 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
Python中的pass语句使用方法讲解
2015/05/14 Python
Python中装饰器高级用法详解
2017/12/25 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
python面试题小结附答案实例代码
2019/04/11 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
Python爬取梨视频的示例
2021/01/29 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
西班牙在线光学:Visual-Click
2020/06/22 全球购物
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
工人先锋号申报材料
2014/12/29 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL
Java 通过手写分布式雪花SnowFlake生成ID方法详解
2022/04/07 Java/Android