PHP 提供了 simplexml_load_string 方法用来解析 XML 格式的字符串,并返回 SimpleXMLElement 对象,不过一般数组是更为适用的,所以也会有转换为普通数组的需求,这个方法测试完全奏效,支持 SimpleXMLElement 对象多层嵌套的情况.

提供两个参数,第一个参数为 SimpleXMLElement 对象,第二个参数为布尔值,控制最终返回值是否包含根节点,代码如下:<?php

function xmlToArr($xml, $root = true) {

if (!$xml->children()) {

return (string)$xml;

}

$array = array();

foreach ($xml->children() as $element => $node) {

$totalElement = count($xml->{$element});

if (!isset($array[$element])) {

$array[$element] = "";

}

// Has attributes

if ($attributes = $node->attributes()) {

$data = array(

'attributes' => array() ,

'value' => (count($node) > 0) ? $this->__xmlToArr($node, false) : (string)$node

);

foreach ($attributes as $attr => $value) {

$data['attributes'][$attr] = (string)$value;

}

if ($totalElement > 1) {

$array[$element][] = $data;

} else {

$array[$element] = $data;

}

// Just a value

} else {

if ($totalElement > 1) {

$array[$element][] = $this->__xmlToArr($node, false);

} else {

$array[$element] = $this->__xmlToArr($node, false);

}

}

}

if ($root) {

return array(

$xml->getName() => $array

);

} else {

return $array;

}

}

?>

随便收藏,请保留本文地址!

php simplexmlelement array,php中SimpleXMLElement 对象转换为数组相关推荐

  1. sqlAlchemy中的对象转换为dict

    sqlAlchemy中的对象转换为dict 假设数据库里有一张post表,其中一种方法就是 p = session.query(Post).first() p.__dict__ 但由于p是sqlAlc ...

  2. php对象如何转化为数组,php如何将对象转换为数组

    php将对象转换为数组的方法是:可以先通过is_object()函数进行判断,然后进行强制类型转换.is_object()函数用于检测变量是否是一个对象.具体转换方法:[$arr = (array)( ...

  3. php怎么创建对象数组对象数组对象,在PHP中把对象当数组使用

    在PHP中把对象当数组使用 我们了解,JAVASCRIPT中,对象的属性.方法,是可以用数组的模式来访问的.但通常情况下是不可能的. 为什么要这么做?这是因为,通过这一方式,可以更加方便地操作对象,我 ...

  4. 【性能优化】面试官:Java中的对象和数组都是在堆上分配的吗?

    写在前面 从开始学习Java的时候,我们就接触了这样一种观点:Java中的对象是在堆上创建的,对象的引用是放在栈里的,那这个观点就真的是正确的吗?如果是正确的,那么,面试官为啥会问:"Jav ...

  5. 微信小程序更新二维数组中的对象或数组的属性值

    微信小程序更新二维数组中的对象或数组的属性值,这里可能有两种情况 1.微信小程序更新二维数组中的对象的属性值 更新二维数组中的某个对象的属性值,代码如下 js 代码 data: {familys:[{ ...

  6. vue中检测对象和数组值变化的问题

    今天工作中遇到改变vue  data中某个对象的值,却无法触发视图更新的问题.看了看官方文档,怎么解决的呢? 1.检测对象的变化 受现代 JavaScript 的限制(以及废弃 Object.obse ...

  7. vue中插值语法中v-for() of 与v-for() in 遍历对象数组的异同,以及for in for of在方法中遍历对象和数组的异同

    写这个的目的是记录下Vue中使用v-for-in v-for-of遍历对象与遍历数组的区别,以及JS中使用for-in for-of 遍历对象和数组的区别. 直接说结论,节约大家时间,下面是推论,有时 ...

  8. 将json对象转换为数组,获取json对象的属性值

    需求:做工作流项目时,需将节点数据取出,但是数据不是数组格式,不好取数据,转换为数组, 关键代码: Object.keys(nodeArr[j]) 获取数组名 obj[keyname].type 获取 ...

  9. C#中String对象转换为Font对象的方法

    FontConverter fc = new FontConverter();             //转换为文本形式             string strf= fc.ConvertToI ...

最新文章

  1. 如何零门槛搭建实时音视频通信平台
  2. springboot+vue在线音乐网站
  3. java selenium验证元素是否存在
  4. Parallel Query Bitmap
  5. rules不显示 vue_使用stylelint规范vue项目
  6. hdu 5266(线段树+LCA)
  7. DIV的边距属性在Chrome和IE中的区别
  8. 技术人必备的碎片化时间学习工具
  9. 【渝粤题库】国家开放大学2021春2312旅行社经营管理题目
  10. Gartner数据劲爆:阿里全球第三,华为中国第二!
  11. mysql互为主从 keep_KeepAlived+MySQL互为主从
  12. python填充数组到指定长度
  13. 自然语言处理技术在推荐系统中的应用和发展(附交流视频和PPT下载链接)
  14. 博客园博客美化相关文章目录
  15. js 中添加php数组,浅谈javascript中数组Array的添加/删除操作
  16. Python学习Day14
  17. 自动化查询及增加配置参数功能
  18. 为什么Word 里表格文字无法垂直居中?明明已经设置垂直居中了
  19. springboot中@SpringBootApplication的扫描范围,以及多模块的扫描问题
  20. elementUI Tree组件实现双击事件

热门文章

  1. 下面哪个对象能代表当前的HTML文件,华师网络学院作业答案-WEB程序设计选择题...
  2. echarts 其他样式 折线 重叠_echarts 折线图 areaStyle颜色重叠问题
  3. linux bind mysql_linux下安装mysql
  4. java replace stringbuilder_JAVA 中Stringbuilder类的方法
  5. 计划任务执行 php代码,php实现Windows任务计划定时执行的代码以及扩展(图)
  6. PERCONA-TOOLKIT 安装
  7. 局域网ssr转pptp_[网络技术][转]PPTP连接过程
  8. Ssm角色权限后台管理实战开发
  9. 基于JAVA+SpringMVC+MYSQL的求职招聘管理系统
  10. 基于JAVA+SpringMVC+MYSQL的便利店运营管理系统