您现在的位置是:PHP将XML转换成数组

PHP将XML转换成数组

分类: PHP 日期:2016-09-12点击:4100

简单的XML

public static function xmlToArray($xml) {
    libxml_disable_entity_loader(true);
    $result = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
    if( is_array($result) ) {
        return $result;
    }
    return array();
}

带名字空间的XML

//xml转array
public static function xmlToArray($xml) {
    if( !$xml || empty($xml) ){
        return array(); 
    }
    $dom = new DOMDocument();
    $dom->loadXML($xml);
    return self::getArray($dom->documentElement);
}

private static function getArray($node) {
    $array = false;
    if ($node->hasAttributes()) {
        foreach ($node->attributes as $attr) {
            $array[$attr->nodeName] = $attr->nodeValue;
        }
    }

    if ($node->hasChildNodes()) {
        if ($node->childNodes->length == 1) {
            $array[$node->firstChild->nodeName] = self::getArray($node->firstChild);
        } else {
            foreach ($node->childNodes as $childNode) {
                if ($childNode->nodeType != XML_TEXT_NODE) {
                    $array[$childNode->nodeName][] = self::getArray($childNode);
                }
            }
        }
    } else {
        return $node->nodeValue;
    }
    return $array;
}


标签: PHP XML

站长简介

    姓名:喻理
    微信:yuli0927
    邮箱:yuli0927@126.com
    不懂业务的运维工程师不是一个好程序员。

分类

最新文章

热门文章

全站标签