XML konvertálása JSON objektummá vagy asszociatív tömbbé PHP-vel

Annak ellenére, hogy a JSON nagyon hódít – nyilvánvaló okok miatt, még mindig nagyon sokan használnak XML formátumokat. Többek között ilyen az RSS feed is, de az egyik legerősebb marketinggel rendelkező bérelhető webshop API-ja is, a ShopRenteré. XML-el dolgozni viszont rémálom a JSON-höz képest. Így hát felmerült a probléma, hogy  valami egyszerű megoldás kellene, ahelyett, hogy minden XML-t végignézek.

A megoldás szerencsére meglehetősen egyszerű, a kapott XML stringet átalakítjuk PHP objektummá a SimpleXML segítségével, azt pedig json_encode -dal JSON-né alakítjuk, majd json_decode -dal vissza. Máris csak a lényeg marad. A trükk az, hogy a LIBXML_NOCDATA paraméterrel kell a simplexml_load_string -et meghívni, az alábbi módon:

$xml_obj = simplexml_load_string( $xml_string , null, LIBXML_NOCDATA  );
$json_obj = json_encode( $xml_obj );
$result = json_decode( $json_obj );

Ugyanez pl. RSS feed esetén:

$rss_url = 'http://www.p1race.hu/rss/rss.php';
$xml = simplexml_load_file( $rss_url , null, LIBXML_NOCDATA );
$response = json_decode( json_encode( $xml ) );
print_r( $response );