xml2array() - XML Parser for PHP

xml2array() is a easy to use PHP function that will convert the given XML text to an array in the XML structure. Kind of like my Javascript xml2array() function.

For example, this XML...


<?xml version="1.0" encoding="iso-8859-1"?>
<languages>
	<lang type='interpreted'>
		<name know='true' application='web'>PHP</name>
		<name know='true'>Python</name>
	</lang>
	
	<lang type='compiled'>
		<name know='true'>C++</name>
		<name>Java</name>
	</lang>
</languages>

Will be converted to...

Array
(
    [languages] => Array
        (
            [lang] => Array
                (
                    [0] => Array
                        (
                            [attr] => Array
                                (
                                    [type] => interpreted
                                )
                            [name] => Array
                                (
                                    [0] => Array
                                        (
                                            [value] => PHP
                                            [attr] => Array
                                                (
                                                    [know] => true
                                                    [application] => web
                                                )
                                        )
                                    [1] => Array
                                        (
                                            [value] => Python
                                            [attr] => Array
                                                (
                                                    [know] => true
                                                )
                                        )
                                )
                        )
                    [1] => Array
                        (
                            [attr] => Array
                                (
                                    [type] => compiled
                                )
                            [name] => Array
                                (
                                    [0] => Array
                                        (
                                            [value] => C++
                                            [attr] => Array
                                                (
                                                    [know] => true
                                                )
                                    [1] => Array
                                        (
                                            [value] => Java
                                        )
                                )
                        )
                )
        )
)

Using the simple code...


$contents = file_get_contents('sample.xml');//Or however you what it
$result = xml2array($contents);
print_r($result);

This is kind of verbose - this is because I had to support the attributes in XML. There is an option in this function to ignore all attributes. The same XML produces this output.


Array
(
    [languages] => Array
        (
            [lang] => Array
                (
                    [0] => Array
                        (
                            [name] => Array
                                (
                                    [0] => PHP
                                    [1] => Python
                                )
                        )
                    [1] => Array
                        (
                            [name] => Array
                                (
                                    [0] => C++
                                    [1] => Java
                                )
                        )
                )
        )
)

This can be done using a second argument to the function...


$contents = file_get_contents('sample.xml');//Or however you what it
$result = xml2array($contents,0);
print_r($result);
blog comments powered by Disqus
Subscribe to Feed