这两天在公司写和各应用商店应用内搜索的接口,大致就像百度应用内搜索这样的东西,具体可以点下面的链接查看。

百度应用内搜索

有的应用商店需要JSON格式的数据,所以我只需要用下面的语句就可以返回对方服务器需要的数据。

echo json_encode($array);

然而遇到像百度这种需要XML格式的就比较蛋疼了,php的确在标准库里提供了生成XML文件的方法。可能是因为这部分的中文文档还没有,并不能百度到详尽的介绍(笑),因此花点时间自己写一个XML类封装几个可能用得到的方法。

我使用的是php标准库里的simpleXMLElement拓展,原因是这个拓展相比于DOMDocument更加轻量,使用方便,适合于我这样的懒鬼(划掉)。

将数组转换为xml格式的文件需要用到递归,但是并不复杂,具体看代码。

<?php
/**
* 自定义XML类
* XML::arrayToXMLString : 将数组转换为XML格式的字符串
* XML::writeAsXML : 使用SimpleXMLElement输出XML文件
*
* @author zhouxuchen1993@foxmail.com
*/
class XML { /**
* 将数组转换为XML格式的字符串
* @param Array $array : 待转换的数组
* @return String $xmlString : XML格式的字符串
*/
public static function arrayToXMLString ($array) {
$xmlString = ""; foreach ($array as $key => $value) {
if (is_array($value)) {
$xmlString .= "<$key>\n";
$xmlString .= self::arrayToXMLString($value);
$xmlString .= "</$key>\n";
} else {
$xmlString .= "<$key>";
$xmlString .= "$value";
$xmlString .= "</$key>\n";
}
} return $xmlString;
} /**
* 使用SimpleXMLElement输出XML文件
* @param String $xmlString : XML格式的字符串
* @param String $filename : 输出的文件名,留空则不写入文件
* @param String $filepath : 输出的文件路径,留空则写入当前目录
* @return boolean $flag : simpleXMLElement转换是否成功标志
*/
public static function writeAsXML($xmlString, $filename='', $filepath='') {
$simpleXML = new simpleXMLElement($xmlString);
if ($filename != '') {
$filename = empty($filepath) ? $filename : $filepath.'/'.$filename;
$flag = $simpleXML->asXML($filename);
} else {
$flag = $simpleXML->asXML();
} return $flag;
} }

另外我写了一个Demo,直接粘贴在上面代码的后部就可以运行了。

<?php
/**
* Demo
* @author zhouxuchen1993@foxmail.com
*/
$array = array();
$array['urlset'] = array(
'url' => array(
'loc' => 'http://baidu.com',
'lastmod' => '2014-09-06',
'data' => array(
'display' => array(
'innerID' => 1,
'sourceTime' => time(),
'title' => '<![CDATA[上海招聘]]>',
'displayInfo1' => array(
'key1' => 'key1',
'value1' => 'value1'
),
'displayInfo2' => array(
'key1' => 'key1',
'value1' => 'value1'
),
),
),
),
); $xmlString = XML::arrayToXMLString($array);
$xmlString = '<?xml version="1.0" encoding="utf-8"?>'.$xmlString;
$flag = XML::writeAsXML($xmlString, 'test.xml');
var_dump($flag);

我将代码放在了我的GitOSC主页上,有兴趣的可以去查看。

xml.class.php

最新文章

  1. opecv获取图像轮廓
  2. location
  3. LTE Module User Documentation(翻译15)——示例程序、参考场景以及故障检测和调试技巧
  4. Shell脚本中执行sql语句操作mysql
  5. SQL - 生成指定范围内的随机数
  6. Partran,Nastran和ANSYS的区别
  7. Struts2.3+Spring+iBatis 初学之问题判断
  8. 【英语】Bingo口语笔记(60) - 口语中的浊化发音
  9. Hibernate管理Session和批量操作
  10. ocp 1Z0-043 61-130题解析
  11. PL/SQL Developer简单使用
  12. PHP echo, print, printf, sprintf函数的区别和使用
  13. curl订单具体解释
  14. LINQ 的查询_联表、分组、排序
  15. 【原创】java NIO FileChannel 学习笔记 FileChannel实现分析 即FileChannelImpl分析
  16. Mybatis注意点之#与$区别
  17. shell中的输出重定向
  18. python基础—购物车小程序练习
  19. new和delete动态分配和撤销内存
  20. UVa Live 4725 - Airport 二分,动态规划,细节 难度: 1

热门文章

  1. request常用的方法
  2. HOJ 2139 Spiderman's workout(动态规划)
  3. Ultra-QuickSort---poj2299 (归并排序.逆序数.树状数组.离散化)
  4. js-template-art【一】简述
  5. HDU1796How many integers can you find(容斥原理)
  6. PAT 1129 Recommendation System[比较]
  7. 单机部署PXC
  8. Python ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。
  9. 1.2、Django 视图与网址__进阶
  10. SpringData关键字查询练习