Solved

xml to array reading the array

Posted on 2009-05-20
4
236 Views
Last Modified: 2013-12-12
Hi

i use the function below to parse a xml file

which outputs the xml into an array like this below

how would i just read the " [year] => 2005 "  part

as i need to be able get that and just echo it

Regards

Pete




Array
(
    [decoded_vin_data] => Array
        (
            [decoder_version] => 6.0.1
            [decoder_error] => Array
                (
                    [error_code] => Array
                        (
                        )

                    [error_message] => Array
                        (
                        )

                )

            [vin_number] => Array
                (
                    [vin_error] => Array
                        (
                            [error_code] => Array
                                (
                                )

                            [error_message] => Array
                                (
                                )

                        )

                    [common_data] => Array
                        (
                            [basic_data] => Array
                                (
                                    [year] => 2005
                                    [make] => Chrysler
                                    [model] => PT Cruiser
                                    [trim] => Touring
                                    [style] => Touring 4dr Wagon (2.4L 4cyl 5M)
                                    [vehicle_type] => Car
                                    [body_type] => Wagon
                                    [body_subtype] => Array
                                        (
                                        )

                                    [doors] => 4
                                    [model_number] => PTCP44
                                    [package_code] => Array
                                        (
                                        )

                                    [country_of_manufacture] => Array
                                        (
                                        )

                                    [plant] => TOLUCA, MEXICO
                                )

                            [specifications] => Array
                                (
                                    [category] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [drive_type] => FWD
                                                    [hub_type_4wd] => Array
                                                        (
                                                        )

                                                )

                                            [1] => Array
                                                (
                                                    [acceleration_to_100] => 0
                                                    [acceleration_to_60] => 0
                                                    [aerodynamic_drag] => 0
                                                    [braking_distance] => 0
                                                    [turning_circle] => 36.7
                                                )




<?php	

 

$clean_xml_array=xml2array('file.xml');

	echo '<pre>';

	print_r($clean_xml_array);

 

 

 

	//This function was taken from php.net (http://us2.php.net/manual/en/function.xml-parse.php)

	// user: lz_speedy at web dot de - post date:30-Dec-2008 06:20

	//this function turns an XML string in to a well structured array

	function xml2array($url, $get_attributes = 1, $priority = 'tag')

	{

	    $contents = "";

	    if (!function_exists('xml_parser_create'))

	    {

	        return array ();

	    }

	    $parser = xml_parser_create('');

	    if (!($fp = @ fopen($url, 'rb')))

	    {

	        return array ();

	    }

	    while (!feof($fp))

	    {

	        $contents .= fread($fp, 8192);

	    }

	    fclose($fp);

	    xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8");

	    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);

	    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);

	    xml_parse_into_struct($parser, trim($contents), $xml_values);

	    xml_parser_free($parser);

	    if (!$xml_values)

	        return; //Hmm...

	    $xml_array = array ();

	    $parents = array ();

	    $opened_tags = array ();

	    $arr = array ();

	    $current = & $xml_array;

	    $repeated_tag_index = array ();

	    foreach ($xml_values as $data)

	    {

	        unset ($attributes, $value);

	        extract($data);

	        $result = array ();

	        $attributes_data = array ();

	        if (isset ($value))

	        {

	            if ($priority == 'tag')

	                $result = $value;

	            else

	                $result['value'] = $value;

	        }

	        if (isset ($attributes) and $get_attributes)

	        {

	            foreach ($attributes as $attr => $val)

	            {

	                if ($priority == 'tag')

	                    $attributes_data[$attr] = $val;

	                else

	                    $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr'

	            }

	        }

	        if ($type == "open")

	        {

	            $parent[$level -1] = & $current;

	            if (!is_array($current) or (!in_array($tag, array_keys($current))))

	            {

	                $current[$tag] = $result;

	                if ($attributes_data)

	                    $current[$tag . '_attr'] = $attributes_data;

	                $repeated_tag_index[$tag . '_' . $level] = 1;

	                $current = & $current[$tag];

	            }

	            else

	            {

	                if (isset ($current[$tag][0]))

	                {

	                    $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;

	                    $repeated_tag_index[$tag . '_' . $level]++;

	                }

	                else

	                {

	                    $current[$tag] = array (

	                        $current[$tag],

	                        $result

	                    );

	                    $repeated_tag_index[$tag . '_' . $level] = 2;

	                    if (isset ($current[$tag . '_attr']))

	                    {

	                        $current[$tag]['0_attr'] = $current[$tag . '_attr'];

	                        unset ($current[$tag . '_attr']);

	                    }

	                }

	                $last_item_index = $repeated_tag_index[$tag . '_' . $level] - 1;

	                $current = & $current[$tag][$last_item_index];

	            }

	        }

	        elseif ($type == "complete")

	        {

	            if (!isset ($current[$tag]))

	            {

	                $current[$tag] = $result;

	                $repeated_tag_index[$tag . '_' . $level] = 1;

	                if ($priority == 'tag' and $attributes_data)

	                    $current[$tag . '_attr'] = $attributes_data;

	            }

	            else

	            {

	                if (isset ($current[$tag][0]) and is_array($current[$tag]))

	                {

	                    $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;

	                    if ($priority == 'tag' and $get_attributes and $attributes_data)

	                    {

	                        $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;

	                    }

	                    $repeated_tag_index[$tag . '_' . $level]++;

	                }

	                else

	                {

	                    $current[$tag] = array (

	                        $current[$tag],

	                        $result

	                    );

	                    $repeated_tag_index[$tag . '_' . $level] = 1;

	                    if ($priority == 'tag' and $get_attributes)

	                    {

	                        if (isset ($current[$tag . '_attr']))

	                        {

	                            $current[$tag]['0_attr'] = $current[$tag . '_attr'];

	                            unset ($current[$tag . '_attr']);

	                        }

	                        if ($attributes_data)

	                        {

	                            $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;

	                        }

	                    }

	                    $repeated_tag_index[$tag . '_' . $level]++; //0 and 1 index is already taken

	                }

	            }

	        }

	        elseif ($type == 'close')

	        {

	            $current = & $parent[$level -1];

	        }

	    }

	    return ($xml_array);

	}

 

?>

Open in new window

0
Comment
Question by:peter2001
  • 2
  • 2
4 Comments
 
LVL 7

Expert Comment

by:szewkam
Comment Utility
hmm... echo $source["decoded_vin_data"]["vin_number"]["common_data"]["year"]; ?
0
 
LVL 7

Accepted Solution

by:
szewkam earned 75 total points
Comment Utility
sorry, i one mistake, i didn't noticed one level:
echo $source["decoded_vin_data"]["vin_number"]["common_data"]["basic_data"]["year"];
0
 
LVL 1

Author Comment

by:peter2001
Comment Utility
Hi
thanks that's the bit that was throwing me the order

cheers for you help
0
 
LVL 1

Author Closing Comment

by:peter2001
Comment Utility
thank you
0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

Author Note: Since this E-E article was originally written, years ago, formal testing has come into common use in the world of PHP.  PHPUnit (http://en.wikipedia.org/wiki/PHPUnit) and similar technologies have enjoyed wide adoption, making it possib…
Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now