PHP中数组转换为XML格式
最近公司要做一个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;
}
}
PHP中数组转换为XML格式的更多相关文章
- JSon_零基础_002_将List类型数组转换为JSon格式的对象字符串,返回给界面
将List类型数组转换为JSon格式的对象字符串,返回给界面 所需要导入的包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * ...
- JSon_零基础_001_将布尔类型数组转换为JSon格式字符串,返回给界面
将布尔类型数组转换为JSon格式字符串,返回给界面 需要导入包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * 下一步com ...
- Python:numpy数组转换为json格式
在python中,如何将一个numpy数组转换为json格式? 这是最近遇到的一个问题,做个笔记. 假设arr为numpy数组,将其转换为json格式: 总体思想是①首先转换为python的list, ...
- 织梦dedecms中html和xml格式的网站地图sitemap制作方法
sitemap是网站上各网页的列表.创建并提交sitemap有助于百度(Google)发现并了解您网站上的所有网页,包括百度通过传统抓取方式可能找不到的网页.还可以使用sitemap提供有关你网站的其 ...
- 数组转xml格式/xml格式转数组
数组转xml格式 $arr=array( 'username'=>'huahua', 'password'=>'123456', 'number'=>'15889652911', ) ...
- 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)
方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold&q ...
- jansen字符串转换为xml格式
/// <summary> /// json字符串转换为Xml对象 /// </summary> /// <param name="sJson"> ...
- Java POI 读取Excel数据转换为XML格式
1.首先要下载poi相关的包:http://poi.apache.org/ ,以下是所需的jar包 2.贴上详细的代码 public class ExcelToXml { /** * 将excel的 ...
- javascript 中的JSON.stringify - 将对象和数组转换为json格式(来源于网络)
JSON.stringify 函数 (JavaScript) 将 JavaScript 值转换为 JavaScript 对象表示法 (Json) 字符串. JSON.stringi ...
随机推荐
- STL之deque双向队列
deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,提供随机访问,deque在接口上和vector非常相似,下面列出deque的常用成员函数: Table 6.9. C ...
- linux下查看文件系统类型
1. df -hT命令 -h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G) -T, --pr ...
- 小学生之JAVA中的分层
三层架构 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL). 区分层次的目的即为了“高内聚,低 ...
- js 获取元素在页面上的偏移量的最佳方式
使用js制作效果时,我们常常要获取某个元素在页面上的偏移量(例如tip提示框功能).而获取偏移量可以直接获取相对于document的偏移量,也可以获取相对与视口的偏移量(viewpoint)加上页面滚 ...
- sourceTree添加git密钥步骤
给多个远程服务器比如https://github.com/wangjian2014/wjtest/blob/master/wj.txt添加public密钥 本地服务器添加private密钥 S ...
- axure RP Pro7.0加载日历控件的步骤
- 用CSS边框图像让你的网站更漂亮
不久之前,添加一些装饰性元素,例如给网页中的图片添加花哨的边,以及耐心调整CSS文件才能使你的网页看起来不错.然而现在CSS已经做出了改变,用复杂的边框装饰你的网站只需几行代码.这篇文章将告诉你如何做 ...
- 武汉科技大学ACM:1006: 我是老大
Problem Description 今年是2021年,正值武汉科技大学 ACM俱乐部成立10周年.十周年庆祝那天,从ACM俱乐部走出去的各路牛人欢聚一堂,其乐融融.庆祝晚会上,大家纷纷向俱乐部伸出 ...
- 搭建Memcached + php 缓存系统
服务器环境,Centos6.5 1.安装Memcached服务端 Yum -y install memcached 2.配置Memcached服务端用户以及自动启动服务等 将服务配置成自启动 chkc ...
- storm教程
二.安装部署 一.storm伪分布式安装 (一)环境准备1.OS:debian 72.JDK 7.0 (二)安装zookeeper1.下载zookeeper并解压 wget http://mirr ...