注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

红尘若梦

生活的色彩

 
 
 

日志

 
 

php利用simplexml_load_string将解析结果对象转成数组或JSON格式  

2016-05-19 15:19:41|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在使用微信接口的时候,微信服务器返回一个都是XML,而我方的APP则是使用JSON格式,所以必须要由后台将XML格式转换成数组,再转成JSON格式,以方便跟APP交互。项目使用语言是php,虽然可以使用simplexml_load_string()处理,但是返回的是一个对象,那么问题就来了,要如何将对象里面的值都成数组呢?
写了一个简单的函数即可以实现这个目的了,相关示范如下:

<?php
/**
* xml文档转为数组元素
* @param $xmlobject XML文档对象
* @return array
*/
function xmlToArrayElement($xmlobject) {
$data = array();
foreach ((array) $xmlobject as $key => $value) {
$data[$key] = !is_string($value)?xmlToArrayElement($value):$value;
}
return $data;
}
//获取xml内容
$xml=file_get_contents("http://593668.com/sitemaps.xml");
//将xmll转成数组
$re=xmlToArrayElement(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA));
print_r($re);
?>

至于将数组转换成JSON格式就不再多述了。这里解释下,使用 LIBXML_NOCDATA参数的含义是将CDATA设置为文本节点。
当然它还可以有其他选项,请按照相应的去调整。

LIBXML_COMPACT - 激活节点的优化配置(可加速应用程序)
LIBXML_DTDATTR - 设置默认的 DTD 属性
LIBXML_DTDLOAD - 装载额外的子集
LIBXML_DTDVALID - 验证 DTD 有效性
LIBXML_NOBLANKS - 删除空节点
LIBXML_NOCDATA - 将 CDATA 设置为文本节点
LIBXML_NOEMPTYTAG - 扩展空标签(例如 <br/> 到 <br></br>),仅在 DOMDocument->save() 和 DOMDocument->saveXML() 函数中有效
LIBXML_NOENT - 替代实体
LIBXML_NOERROR - 不显示错误报告
LIBXML_NONET - 装载文档时停止访问网络
LIBXML_NOWARNING - 不显示警告报告
LIBXML_NOXMLDECL - 当存储一个文档时放弃 XML 声明
LIBXML_NSCLEAN - 删除多余的名称空间声明
LIBXML_PARSEHUGE - 设置 XML_PARSE_HUGE 标志,用来放宽解析器的任何强制限制。这将影响诸如文档的最大深度和文本节点大小限制等。
LIBXML_XINCLUDE - 使用 XInclude 替代
LIBXML_ERR_ERROR - 获取可纠正的错误
LIBXML_ERR_FATAL - 获取致命错误
LIBXML_ERR_NONE - 不获取错误
LIBXML_ERR_WARNING - 获取简单警告
LIBXML_VERSION - 获取 libxml 版本(例如 20605 或 20617)
LIBXML_DOTTED_VERSION - 获取带点的 libxml 版本(例如 2.6.5 或 2.6.17)

好了,有了以上的代码,再结合以前的文章《php针对URL传递参数字符串,变量,JSON与数组的相互转换》,相信一切就都不是问题了。


      
  评论这张
 
阅读(47)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017