php怎么把xml转换成数组_PHP实现XML数据转换为数组

admin 百科 15
XML转PHP数组有四种方法:一、simplexml_load_string配合json_encode/decode,适用于规范结构但丢失属性;二、DOMDocument递归遍历,完整保留结构与属性;三、xml_parse_into_struct,适合内存受限场景,需手动维护层级;四、第三方库spatie/array-xml,支持属性、CDATA等,需Composer安装。

php怎么把xml转换成数组_PHP实现XML数据转换为数组-第1张图片-佛山资讯网

如果您需要将XML格式的数据转换为PHP数组以便于处理,则可能是由于XML结构复杂或需与现有数组操作逻辑兼容。以下是实现此转换的多种方法:

一、使用simplexml_load_string配合json_encode和json_decode

该方法利用SimpleXML解析XML字符串为对象,再通过JSON中间格式转为关联数组,适用于结构较规范、无重复同名子节点的XML。

1、调用simplexml_load_string函数将XML字符串解析为SimpleXMLElement对象。

2、使用json_encode函数将该对象转换为JSON字符串。

立即学习“PHP免费学习笔记(深入)”;

3、使用json_decode函数并传入true参数,将JSON字符串解码为关联数组。

4、若XML根节点需保留在数组顶层,可手动提取子节点数组并重新封装,注意:此方法会丢失XML属性信息,除非在转换前进行特殊处理

二、使用DOMDocument配合递归遍历

该方法通过DOMDocument加载XML,再使用递归函数逐层提取节点名称、文本内容及属性,可完整保留XML结构与属性,适合含混合内容或同名多节点的XML。

1、实例化DOMDocument对象,并调用loadXML或load方法加载XML字符串或文件。

2、获取documentElement属性获得根节点对象。

3、编写递归函数,对每个DOMNode判断类型:若为ELEMENT_NODE,则创建键名;若含子节点则递归处理;若含attributes属性,则将属性存入名为@attributes的子数组。

4、对同一父节点下的多个同名子节点,自动转为数值索引数组,注意:需显式判断childNodes长度大于1且存在同名节点,否则单节点应保持为关联数组而非索引数组

标签: php js json node composer 编码 递归函数 xml解析 字符串解析

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~