当前位置: 首页 > news >正文

php xml数据转数组两种方式

 

 

目录

方法一、可以使用simplexml_load_string()函数将XML数据转换为数组。

 方法二、使用PHP内置的DOMDocument类来将XML数据转换为数组的方法


方法一、可以使用simplexml_load_string()函数将XML数据转换为数组。
$xmlData = '<root><name>John Doe</name><age>30</age></root>';
$xml = simplexml_load_string($xmlData);
$json = json_encode($xml);
$array = json_decode($json, true);
print_r($array);

首先将XML数据存储在一个字符串中,然后使用simplexml_load_string()函数将其转换为SimpleXMLElement对象。

接下来,使用json_encode()函数将SimpleXMLElement对象转换为JSON字符串,

再使用json_decode()函数将JSON字符串转换为关联数组。最后,使用print_r()函数打印出数组的内容 

 方法二、使用PHP内置的DOMDocument类来将XML数据转换为数组的方法
$xmlData = '<root><name>John Doe</name><age>30</age></root>';
$xml = new DOMDocument();
$xml->loadXML($xmlData);
$array = domToArray($xml->documentElement);
print_r($array);
function domToArray($node) {$array = array();if ($node->hasAttributes()) {foreach ($node->attributes as $attr) {$array[$attr->nodeName] = $attr->nodeValue;}}if ($node->hasChildNodes()) {foreach ($node->childNodes as $childNode) {if ($childNode->nodeType == XML_ELEMENT_NODE) {$array[$childNode->nodeName] = domToArray($childNode);} else if ($childNode->nodeType == XML_TEXT_NODE) {$array['value'] = $childNode->nodeValue;}}}return $array;
}

这个例子创建了一个DOMDocument对象,并使用loadXML()方法将XML数据加载到该对象中。

然后,使用domToArray()函数将DOM文档转换为数组。

这个函数递归地遍历XML节点,并将节点的名称和值存储在数组中。

如果节点有属性,则也将其作为键值对存储在数组中。

最后,使用print_r()函数打印出数组的内容。

需要注意的是,domToArray()函数是递归的,它能够处理复杂的XML结构。请根据你的XML数据进行适当的调整 

http://www.lryc.cn/news/241204.html

相关文章:

  • wagtail-安装配置
  • 基于Android校园交流uniAPP+vue 微信小程序v7e1
  • geemap学习笔记013:为遥感动态GIF图添加图名
  • 【开源】基于JAVA的高校实验室管理系统
  • 为啥 有了锤子,看啥都是钉子?
  • java实现连接linux(上传文件,执行shell命令等)
  • 苹果企业签名和TF签名都是iOS内测中的常见方法有哪些?
  • CC++输入输出流介绍
  • leedcode 刷题 - 除自身以外数组的乘积 - 和为 K 的子数组
  • uniapp 富文本以及移动端富文本的展示问题
  • JAVA sql 查询
  • 掌握Katalon Studio 导入 swagger 接口文档,接口测试效率提升100%
  • 程序员最奔溃的瞬间
  • java字符串的常见用法
  • 链表OJ--下
  • FreeRTOS源码阅读笔记4--semphr.h
  • 面试:MyBatis问题
  • vue中页面(路由)跳转及传值的几种方式 router-link + query + params
  • 媒体格式转换软件Permute 3 mac中文版软件特点
  • Docker实用篇
  • 开启数据库审计(db,extended级别或os级别),并将审计文件存放到/home/oracle/audit下
  • 单片机语音芯片开发要解决的问题
  • Cesium 展示——地球以及渲染数据导出(下载)为图片或 pdf
  • 大数据平台红蓝对抗 - 磨利刃,淬精兵! | 京东云技术团队
  • java游戏制作-王者荣耀游戏
  • Linux实验三:shell程序设计: shell基础
  • webpack环境变量的设置
  • 基于51单片机音乐盒设计( proteus仿真+程序+原理图+PCB+报告+讲解视频)
  • 技术分享| anyRTC之RTN网络
  • 基于GPRS的汽车碰撞自动报警系统(论文+源码)