Solved

xml to array reading the array

Posted on 2009-05-20
4
238 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
ID: 24435767
hmm... echo $source["decoded_vin_data"]["vin_number"]["common_data"]["year"]; ?
0
 
LVL 7

Accepted Solution

by:
szewkam earned 75 total points
ID: 24435783
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
ID: 24436148
Hi
thanks that's the bit that was throwing me the order

cheers for you help
0
 
LVL 1

Author Closing Comment

by:peter2001
ID: 31583695
thank you
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Foreword (July, 2015) Since I first wrote this article, years ago, a great many more people have begun using the internet.  They are coming online from every part of the globe, learning, reading, shopping and spending money at an ever-increasing ra…
Build an array called $myWeek which will hold the array elements Today, Yesterday and then builds up the rest of the week by the name of the day going back 1 week.   (CODE) (CODE) Then you just need to pass your date to the function. If i…
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.

863 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

27 Experts available now in Live!

Get 1:1 Help Now