发表时间:2014-09-05来源:网络
最近公司要做一个API接口,输出格式要有JSON与XML格式, 在PHP中,输入JSON直接json_encode就可以,但输出XML没有提供函数,于是决定自己写一个。<?php/** * 数组转XML类库 * * @filesource ArrayToXML.php * @author gentwolf * @version 1.0 2013/08/23 * * 使用说明: * echo ArrayToXml::parse($array, 'root'); */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; }}
CI框架连接数据库配置操作以及多数据库操作
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
C语言关键字及其解释介绍 C语言32个关键字详解
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
将视频设置为Android手机开机动画的教程
PHP中的(++i)前缀自增 和 (i++)后缀自增
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
常用dos命令及语法
PHP中include和require区别之我见
百度云网盘app(更名为百度网盘)下载v13.17.4 官方安卓版
305.43MB |系统工具
云上嵩县客户端下载v3.0.1 安卓版
181.13MB |资讯阅读
掌上芦淞客户端下载v4.0.1 安卓官方版
75.18MB |资讯阅读
大埔网app最新版下载v4.2.10安卓手机版
50.98MB |资讯阅读
naverpapago翻译软件官方下载v1.11.5 最新版本
143.67MB |生活服务
悦程商旅软件下载v2.16
47.59M |生活服务
月犬旅行app下载v1.0.13
46.4M |生活服务
茶竹永川网官方版下载v7.9.4.1 安卓版
87.73MB |社交娱乐
2014-09-05
2022-03-20
2022-03-21
2022-03-24
2014-09-05
2014-09-05
2015-07-05
2014-09-05
2014-09-05
2022-03-21
玩梗我更强下载v1.0.0 安卓版
其它手游烹饪偶像烹饪餐厅下载v3.2.8 安卓最新版
其它手游烹饪偶像内购破解版下载v3.2.8 安卓版
其它手游烹饪明星厨师中文版下载v3.2.8 安卓版
其它手游布娃娃破坏游乐场下载v1.014 安卓版
其它手游烹饪明星厨师内购破解版下载v3.2.8 安卓版
其它手游孢子进化手机游戏下载v0.2.108 安卓版
其它手游我要切爆全场下载v13.0.0 安卓版
其它手游开心农场3动物园中文版(farmville 3)下载v1.66.51444 安卓版
其它手游