• 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;
        }
    

      

  • 相关阅读:
    Hadoop常用命令介绍
    hadoop异常: java.io.EOFException: Unexpected end of input stream
    Python操作MySQL
    Python常用模块安装
    pyenv激活虚拟环境失败
    Jarvis OJ A Piece Of Cake
    JarvisOJ BASIC 德军的密码
    JarvisOJ BASIC -.-字符串
    HDU 1003 Max Sum
    洛谷 P2119 魔法阵
  • 原文地址:https://www.cnblogs.com/eleven24/p/php-xml-to-array.html
Copyright © 2020-2023  润新知