adam
adam

Reputation: 22597

PHP - JSON to SimpleXML

I have a bunch of PHP web services that construct JSON objects and deliver them using json_encode.

This works fine but I now have a requirement that the web services can also deliver in XML, depending on a given parameter.

I want to stay away from PEAR XML if possible, and hopefully find a simple solution that can be implemented with SimpleXML.

Can anyone give me any advice?

Thanks

Upvotes: 1

Views: 2935

Answers (1)

user2560539
user2560539

Reputation:

You can create an associative array using json_decode($json,true) and try the following function to convert to xml.

function assocArrayToXML($root_element_name,$ar)
{
    $xml = new SimpleXMLElement("<?xml version=\"1.0\"?><{$root_element_name}></{$root_element_name}>");
    $f = function($f,$c,$a) {
            foreach($a as $k=>$v) {
                if(is_array($v)) {
                    $ch=$c->addChild($k);
                    $f($f,$ch,$v);
                } else {
                    $c->addChild($k,$v);
                }
            }
    };
    $f($f,$xml,$ar);
    return $xml->asXML();
} 

// usage
$data = json_decode($json,true);
echo assocArrayToXML("root",$data);

Upvotes: 3

Related Questions