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> /// 通过用户名和密码 返回下行数据 /// & ...
随机推荐
- XML Schema choice 元素
XSD : <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sch="http://w ...
- HTTP请求 GET与POST是怎么实现?
1.HTTP请求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP请求中, ...
- hybird混合式开发搭建
1.xml <?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android=&qu ...
- 【转】Tomcat版本是32位、64位问题
转载地址:http://www.cnblogs.com/greensleeves/p/3168541.html 最近遇到一个Tomcat windows安装版本是32位还是64位问题.由于一系列原因, ...
- java 入门学习
想要学习java,首先你要明白java是干嘛的,它有什么吸引之处,懂程序的都应该知道,java是很多计算机语言的根本,无论在什么时代,科技如何更新,java都不会落后,现在的我在学习初级java,下面 ...
- nodejs笔记
“多读书多看报,少看视频多睡觉.”在2015年即将结束之际,我把这句话作为我2016年的个人签名,希望它能时刻提醒我自己应该去好好读书,查漏补缺,充实自己,遇到不清楚的漏洞就努力去弄懂弄通. 在web ...
- HTML 5 音频
HTML 5 音频 ================================================================================= 音频是视频的重要 ...
- tomcat 配置客户端证书认证
在完成配置客户端证书认证后,浏览器以https访问服务器的时候,会提示选择证书,之后,服务器端会验证证书.也就意味着只有拥有有效证书的客户端才能打开该网站. 以下是具体的配置过程. 1. 在服务器端生 ...
- 在Excel中制作雷达图
雷达图的作用 雷达图是专门用来进行多指标体系比较分析的专业图表.从雷达图中可以看出指标的实际值与参照值的偏离程度,从而为分析者提供有益的信息.雷达图一般用于成绩展示.效果对比量化.多维数据对比等等,只 ...
- Python3基础 列表乘一个整数 扩增列表
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...