php怎么返回xml数据,PHP语言返回XML数据

本文主要向大家介绍了PHP语言返回XML数据,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

开发中经常会有用到XML格式数据的时候,那么用PHP怎么来将数组格式的数据用XML格式返回呢?

新建一个类文件,叫ArrayToXml.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文件:

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频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值