PHP返回XML数据
开发中经常会有用到XML格式数据的时候,那么用PHP怎么来将数组格式的数据用XML格式返回呢?
新建一个类文件,叫ArrayToXml.php
<?php /** * 数组转XML类 * 使用方法:调用类中的parse方法,传入数组和节点名称 */ class ArrayToXML { //文档对象 private static $doc = NULL; //版本号 private static $version = '1.0'; /** * 初始化文档版本及编码 * * @param string $version 版本号 * @param string $encoding XML编码 */ public static function init($version, $encoding) { self::$doc = new DomDocument($version, $encoding); self::$doc->formatOutput = true; } /** * 转换数组到XML * @param array $array 要转换的数组 * @param string $rootName 节点名称 * @param string $version 版本号 * @param string $encoding XML编码 * @return string */ public static function parse($array, $rootName = 'root', $version = '1.0', $encoding = 'UTF-8') { self::init($version, $encoding); //转换 $node = self::convert($array, $rootName); self::$doc->appendChild($node); return self::$doc->saveXML(); } /** * 递归转换 * @param array $array 数组 * @param string $nodeName 节点名称 * @return object (DOMElement) */ private static function convert($array, $nodeName) { if (!is_array($array)) return false; //创建父节点 $node = self::createNode($nodeName); //循环数组 foreach ($array as $key => $value) { $element = self::createNode($key); //如果不是数组,则创建节点的值 if (!is_array($value)) { $element->appendChild(self::createValue($value)); $node->appendChild($element); } else { //如果是数组,则递归 $node->appendChild(self::convert($value, $key, $element)); } } return $node; } private static function createNode($name) { $node = NULL; //如果是字符串,则创建节点 if (!is_numeric($name)) { $node = self::$doc->createElement($name); } else { //如果是数字,则创建默认item节点 $node = self::$doc->createElement('item'); } return $node; } /** * 创建文本节点 * @param string || bool || integer $value * @return object (DOMText || DOMCDATASection ); */ private static function createValue($value) { $textNode = NULL; //如果是bool型,则转换为字符串 if (true === $value || false === $value) { $textNode = self::$doc->createTextNode($value ? 'true' : 'false'); } else { //如果含有HTML标签,则创建CDATA节点 if (strpos($value, '<') > -1) { $textNode = self::$doc->createCDATASection($value); } else { $textNode = self::$doc->createTextNode($value); } } return $textNode; } } ?>
再新建一个index.php文件:
<?php include('ArrayToXMLS.php'); $data = array( 'cehi_one' => array( 'title1' => '测试标题一', 'content1' => '测试内容一' ), 'ceshi_two' => array( 'title2' => ' 测试标题二 ', 'content2' => '测试内容二', 'link' => 'http://www.cnblogs.com/kekeer' ), 'ceshi_three' => array( array( 'title3' => '测试标题二', 'content3' => '测试内容二', 'link' => 'http://www..com/' ), array( 'title2' => '测试二', 'content2' => '测试内容二', 'link' => 'http://www.cnblogs.com/kekeer' ) ) ); $api = new ArrayToXML(); $rs = $api->parse($data); echo $rs; ?>
运行index.php,查看源代码的就可以看到效果了。
注:类文件感谢原作者的分享。
PHP返回XML数据的更多相关文章
- Spring Boot 返回 XML 数据,一分钟搞定!
Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...
- ASP.NET WEB API微信支付通知接口,返回xml数据,微信服务器不识别问题
原文:ASP.NET WEB API微信支付通知接口,返回xml数据,微信服务器不识别问题 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/MrTra ...
- PHP AJAX 返回XML数据
例子:利用AJAX间接访问数据库,查出Nation表中的数据,返回XML数据,并将Nation表中的数据显示在下拉列表框中 外层建一个下拉列表框 </select> JQurey代码 $( ...
- spring 返回xml数据
要将对象以xml数据形式返回:参考:https://blog.csdn.net/Pnoter/article/details/52218363 1:创建对象时应该填上xml注解,这样才能将对象转换为x ...
- java 解析http返回xml数据
//post 请求 private static String sendPost(String url, String urlParameters) throws Exception { URL ob ...
- 纯servlet返回xml数据
... void doget..... response.setContentType("application/xml");//设置格式 PrintWriter out = r ...
- C# 编写的webservice 怎样返回XML数据
[WebMethod] public string GetXml() { string sConStr = ConfigurationManager.ConnectionStrings["c ...
- 【.net 深呼吸】聊聊WCF服务返回XML或JSON格式数据
有时候,为了让数据可以“跨国经营”,尤其是HTTP Web有关的东东,会将数据内容以 XML 或 JSON 的格式返回,这样一来,不管客户端平台是四大文明古国,还是处于蒙昧时代的原始部落,都可以使用这 ...
- WebService传递XML数据 C#DataSet操作XML 解析WebService返回的XML数据
Webservice传递的数据只能是序列化的数据,典型的就是xml数据. /// <summary> /// 通过用户名和密码 返回下行数据 /// & ...
随机推荐
- python 学习
python 使用 缩进 代替 C 中的 {} 或 delphi 中的 begin...end 1.help() 显示帮助或 help(<命令>) 2.字符串前加 r 表示原始字符串, ...
- Swift设置textView的行间距
let textview = UITextView(frame: CGRect(x: 100, y: 100, width: 100, height: 200)) let paraph = NSMut ...
- wps使用技巧
1.和word一样的文档结构图: 视图->文档结构图 (不是导航窗格) 2.粘贴时,出现乱码: WPS->选项->默认粘贴方式:无格式文本. 3.浏览当前文档所在目录: 在WPS的标 ...
- php中CURL实现模拟登录并采集数据
在php中采集我们用的是简单的采集方式(例如file_get_contents)就无法做到了,但是如果想模拟登录用户并采集利用它就没办法了,我们可利用CURL函数来实现模拟登录并采集数据 这里要说一些 ...
- F12定义到元数据问题解决
删除引用中的该dll,重新引用选择解决方案下的项目引用,下次F12就不会进入到元数据而是进入到源代码中方便调试
- 【转】关于phpcms的学习
在实现PHPCMS网站过程中,根据业务需求,我们遇到很多问题,特此总结如下,以便大家参考学习. [1]PHPCMS V9系统目录简析 在研究所有问题之前,请先了解一下系统的文件目录结构,具体如下图所示 ...
- kali4.0 更新源出错
一.前情提要: OS:kail 4.0 64bit 二.出错描述如下: 无法从服务器下载对应版本的软件,我查看了服务器上的版本与我要下载的不一致,因此肯定无法找到对应的软件版本 三.对策: 换源:vi ...
- Making my own Autonomous Robot in ROS / Gazebo, Day 2: Enable the robot
Day 2: Enable the robot Git Setting git checkout master git branch day2_enable_robot git push --set- ...
- 卷土重来之staticHtml基础使用教程
前段时间发布了一个asp.net生存html缓存的东西,老实说坑了蛮多的人,bug比较多, 经过这段时间的测试与改进,应该到了可以使用的地步了, 欢迎大家测试与使用,下面我介绍使用教程,对了,这里感谢 ...
- repeater重复器、地址栏传值、response
repeater重复器: <HeaderTemplate> <ItemTemplate> <AlternatingItemTemplate> <FooterT ...