php 处理数组和XML之间的互相转换实例代码
技术百科
怪我咯
发布时间:2017-07-11
浏览: 次 在开发中,我们经常会遇到数组与xml之间的互相转换,尤其在处理接口开发的时候经常用到,比如对方客户端post一个xml格式的数据到服务器上,服务器上的程序要负责接收解析,还有需要将数据表数据以xml格式提供给第三方等等应用。
本文我们将简单介绍如何使用php处理数组和xml之间的互相转换。
PHP将数组转换成XML
PHP可以将数组转换成xml格式,简单的办法是遍历数组,然后将数组的key/value转换成xml节点,再直接echo输出了,如:
function arrayToXml($arr){ $xml = "
"; foreach ($arr as $key=>$val){ if(is_array($val)){ $xml.="<".$key.">".arrayToXml($val)."".$key.">"; }else{ $xml.="<".$key.">".$val."".$key.">"; } } $xml.=" "; return $xml; }
我测试了下,这个最简单,速度又快,支持多为数组,中文也不会乱码。
另一种方法是利用DOMDocument来生成xml结构:
function arrayToXml($arr,$dom=0,$item=0){
if (!$dom){
$dom = new DOMDocument("1.0");
}
if(!$item){
$item = $dom->createElement("root");
$dom->appendChild($item);
}
foreach ($arr as $key=>$val){
$itemx = $dom->createElement(is_string($key)?$key:"item");
$item->appendChild($itemx);
if (!is_array($val)){
$text = $dom->createTextNode($val);
$itemx->appendChild($text);
}else {
arrayToXml($val,$dom,$itemx);
}
}
return $dom->saveXML();
}它同样可以将数组转换成xml,而且支持多维数组,生成的xml中文也不会乱码。
PHP将XML转换成数组
做接口开发的时候经常会碰到别人提交给你的是xml格式的数据,常见的微信接口、支付宝接口等,他们的接口如发送消息通信都是xml格式的,那么我们先想办法拿到这个xml数据,然后再将其转化成数组。
假设我们获取到一个这样的XML:
月光光abcd 13002 1200 1829 2016-06-01
通过simplexml_load_string()解析读取xml数据,然后先转成json格式,再转换成数组。
function xmlToArray($xml){
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
$val = json_decode(json_encode($xmlstring),true);
return $val;
}调用xmlToArray()可得到以下结果:
得到数组后,我们就可以对数据进行各种处理了。
# 的是
# 他们的
# 都是
# 将其
# 多维
# 给你
# 经常会
# 转换成
# php
# 遍历
# 器上
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win11怎么关闭触控板_Win11笔记本禁用触摸
- Windows10系统服务优化指南_Win10禁用
- 为什么本地php环境运行php脚本卡顿_php执行
- MAC如何启用访达侧边栏显示_MAC Finder
- windows系统找不到无线网络怎么办_windo
- Windows11怎么用“记事本”自动换行与编码
- Python大文件处理策略_内存优化说明【指导】
- 如何在Golang中实现基础配置管理功能_Gola
- 静态属性修改会影响所有实例吗_php作用域操作符下
- 如何使用Golang实现路由分组管理_Golang
- Windows10如何更改日期格式_Win10区域
- Windows如何查看和管理已安装的字体?(字体文
- Win11怎么检查TPM2.0模块_Windows
- C++如何使用std::transform批量处理
- php中::能访问全局变量吗_全局作用域与类作用域
- Mac如何使用听写功能_Mac语音输入打字【效率技
- 如何在Golang中编写异步函数测试_Golang
- c++怎么实现大文件的分块读写_c++ 文件指针s
- Win11怎么关闭小组件_Win11禁用任务栏天气
- Windows资源管理器总是卡顿或重启怎么办?(修
- Win10怎么限制单程序CPU占用上限_Win10
- php控制舵机角度怎么调_php发送pwm信号控制
- mac怎么查看wifi密码_MAC查看已连接WiF
- Win11怎么关闭通知中心_Windows11系统
- Win11怎么关闭任务栏小图标_Windows11
- 如何在Golang中处理模块包路径变化_Golan
- Win11怎么更改文件夹图标_自定义Win11文件
- PHP主流架构怎么监控运行状态_工具推荐【操作】
- LINUX如何删除用户和用户组_Linux use
- Golang如何测试HTTP中间件_Golang
- 如何使用Golang进行HTTP服务性能测试_测量
- Win11怎么关闭搜索历史_Win11清除设备上的
- Windows 10怎么隐藏特定更新补丁_Wind
- Linux如何使用Curl发送请求_Linux下A
- Win11局域网共享怎么设置 Win11文件夹网络
- Win11如何设置环境变量 Win11添加和修改系
- 如何使用Golang实现路由参数绑定_使用Mux和
- Windows10系统怎么查看运行时间_Win10
- php打包exe如何加密代码_防反编译保护方法【技
- php后缀怎么变mp4能播放_让php伪装mp4正
- php文件怎么变mp4保存_php输出视频流保存为
- Windows怎样关闭Edge新标签页广告_Win
- Windows音频驱动无声音原因解析_声卡驱动错误
- php查询数据怎么导出csv_查询结果转csv文件
- Win10怎么卸载鲁大师_Win10彻底卸载鲁大师
- c++的位运算怎么用 与、或、异或、移位操作详解【
- c++中如何求一个数的平方根_c++ sqrt函数
- Win11摄像头无法使用怎么办_Win11相机隐私
- Windows10如何更改桌面背景_Win10个性
- Win11怎么自动隐藏任务栏_Win11全屏显示设

l($arr){
$xml = "
QQ客服