php使用 SImpleXMLElement 把 xml 转为数组
Posted 白桂任的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php使用 SImpleXMLElement 把 xml 转为数组相关的知识,希望对你有一定的参考价值。
<?php $xml = <<<XML <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> <Person> <Name>ruby</Name> <Age>24</Age> <Company> <Name>company</Name> </Company> </Person> </xml> XML; /** * @param SimpleXMLElement $xmls * @return array */ function parseXml($xmls) { $array = []; foreach ($xmls as $key => $xml) { /** @var SimpleXMLElement $xml */ $count = $xml->count(); if ($count == 0) { $res = (string) $xml; } else { $res = parseXml($xml); } $array[$key] = $res; } return $array; } $xmls = new SimpleXMLElement($xml); var_dump(parseXml($xmls));
结果:
2017/10/15 更新互转的方法以及转数组的另外一种方法:下面代码来自 http://www.cnblogs.com/txw1958/p/php-xml-to-array.html
//数组转XML function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key=>$val) { if (is_numeric($val)){ $xml.="<".$key.">".$val."</".$key.">"; }else{ $xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; } } $xml.="</xml>"; return $xml; } //将XML转为array function xmlToArray($xml) { //禁止引用外部xml实体 libxml_disable_entity_loader(true); $values = json_decode(json_encode(simplexml_load_string($xml, \'SimpleXMLElement\', LIBXML_NOCDATA)), true); return $values; }
以上是关于php使用 SImpleXMLElement 把 xml 转为数组的主要内容,如果未能解决你的问题,请参考以下文章
php怎么生成带冒号的节点和属性的,xml使用SimpleXMLElement类或其他php类
在 puphpet PHP 5.6 上找不到类“SimpleXMLElement”