• xml格式数据转数组的函数


    方法一:

    function xmlToArray($xml){
     
     //禁止引用外部xml实体
     
    libxml_disable_entity_loader(true);
     
    $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
     
    $val = json_decode(json_encode($xmlstring),true);
     
    return $val;
     
    }

    方法二:

    function xmlstr_to_array($xmlstr) {
            $doc = new DOMDocument();
            $doc->loadXML($xmlstr);
            return domnode_to_array($doc->documentElement);
        }
     function domnode_to_array($node) {
            $output = array();
            switch ($node->nodeType) {
                case XML_CDATA_SECTION_NODE:
                case XML_TEXT_NODE:
                    $output = trim($node->textContent);
                    break;
                case XML_ELEMENT_NODE:
                    for ($i=0, $m=$node->childNodes->length; $i<$m; $i++) {
                        $child = $node->childNodes->item($i);
                        $v = domnode_to_array($child);
                        if(isset($child->tagName)) {
                            $t = $child->tagName;
                            if(!isset($output[$t])) {
                                $output[$t] = array();
                            }
                            $output[$t][] = $v;
                        }
                        elseif($v) {
                            $output = (string) $v;
                        }
                    }
                    if(is_array($output)) {
                        if($node->attributes->length) {
                            $a = array();
                            foreach($node->attributes as $attrName => $attrNode) {
                                $a[$attrName] = (string) $attrNode->value;
                            }
                            $output['@attributes'] = $a;
                        }
                        foreach ($output as $t => $v) {
                            if(is_array($v) && count($v)==1 && $t!='@attributes') {
                                $output[$t] = $v[0];
                            }
                        }
                    }
                    break;
            }
            return $output;
        }

  • 相关阅读:
    JAVA 面向对象的扩展 内部类
    对于win10 更换JDK后 查询JDK路径还是原路径的解决办法
    懂得的懂
    稀疏数组转化二维数组
    Flume的安装配置
    CentOS7配置ip和ssh免密登录和hadoop环境
    AOP的使用和事务
    spring的个人理解
    单车月结算2-修改和删除功能
    单车月结算1
  • 原文地址:https://www.cnblogs.com/dai-/p/6754722.html
Copyright © 2020-2023  润新知