protected  function recursiveParseToArray($xml) {
        if( $xml instanceof \SimpleXMLElement ) {
            $attributes = $xml->attributes();

            foreach( $attributes as $key => $value ) {
                if( $value ) {
                    $attribute_array[$key] = (string) $value;
                }
            }
            $previous_xml = $xml;
            $xml = get_object_vars($xml);
        }

        if(is_array($xml)) {

            if( count($xml) == 0 )
                return (string) $previous_xml; // for CDATA

            foreach($xml as $key => $value) {
                $row[$key] = $this->recursiveParseToArray($value);
            }
            if ( is_string($value) ) {
                // дошли до конца рекурсии
                // преобразуем ряд согласно конфигурации
                if ( $this->keys !== NULL ) {
                    // назначим ключи из конфигурации, согласно массиву $keys
                    $row = $this->compareArrayWithKeys( $row );
                }
                $row = $this->convert( $row );

            }

            if( isset( $attribute_array ) )
                $row['@'] = $attribute_array; // Attributes

            return $row;
        }
        return (string) $xml;
    }
protected  function recursiveParseToArray($xml) {
        if( $xml instanceof \SimpleXMLElement ) {
            $attributes = $xml->attributes();

            foreach( $attributes as $key => $value ) {
                if( $value ) {
                    $attribute_array[$key] = (string) $value;
                }
            }
            $previous_xml = $xml;
            $xml = get_object_vars($xml);
        }

        if(is_array($xml)) {

            if( count($xml) == 0 )
                return (string) $previous_xml; // for CDATA

            foreach($xml as $key => $value) {
                $row[$key] = $this->recursiveParseToArray($value);
            }
            if ( is_string($value) ) {
                // дошли до конца рекурсии
                // преобразуем ряд согласно конфигурации
                if ( $this->keys !== NULL ) {
                    // назначим ключи из конфигурации, согласно массиву $keys
                    $row = $this->compareArrayWithKeys( $row );
                }
                $row = $this->convert( $row );

            }

            if( isset( $attribute_array ) )
                $row['@'] = $attribute_array; // Attributes

            return $row;
        }
        return (string) $xml;
    }
protected function recursiveParseToArray ( $ xml ) { if ( $ xml instanceof \ SimpleXMLElement ) { $ attributes = $ xml -> attributes ( ) ; foreach ( $ attributes as $ key => $ value ) { if ( $ value ) { $ attribute_array [ $ key ] = ( string ) $ value ; } } $ previous_xml = $ xml ; $ xml = get_object_vars ( $ xml ) ; } if ( is_array ( $ xml ) ) { if ( count ( $ xml ) == 0 ) return ( string ) $ previous_xml ; // for CDATA foreach ( $ xml as $ key => $ value ) { $ row [ $ key ] = $ this -> recursiveParseToArray ( $ value ) ; } if ( is_string ( $ value ) ) { // дошли до конца рекурсии // преобразуем ряд согласно конфигурации if ( $ this -> keys !== NULL ) { // назначим ключи из конфигурации, согласно массиву $keys $ row = $ this -> compareArrayWithKeys ( $ row ) ; } $ row = $ this -> convert ( $ row ) ; } if ( isset ( $ attribute_array ) ) $ row [ '@' ] = $ attribute_array ; // Attributes return $ row ; } return ( string ) $ xml ; }
Convert a XML string to a PHP array recursively. Do not
call this function directly

@param SimpleXMLElement

@return mixed
Convert a XML string to a PHP array recursively . Do not call this function directly