XML zu JSON umwandeln mit PHP

Hier ein einfaches Beispiel, wie aus folgender XML-Datei über das Attribut ‚id‘ ein Datensatz gelesen, und als Antwort ein JSON-Objekt zurück geliefert wird.

<?xml version="1.0" encoding="utf-8"?>
<articles>
<article id="1">
  <artid>A1001</artid>
  <descr>Description here</descr>
  <price>12.89</price>
</article>
<article id="2">
  <artid>B2002</artid>
  <descr>Description here</descr>
  <price>8.49</price>
</article>
</articles>

Per XPATH werden alle Knoten ‚article‘ mit dem Attribut id = 2 selektiert. (Sollte in diesem Beispiel eindeutig sein, d.h. der Primärschlüssel.)

<?php
header("Content-type: application/json");
echo "{";

if (isset($_GET["id"])) {
  
  $xml = simplexml_load_file("data.xml"); 
	
  foreach($xml->xpath("//article[" . $_GET["id"] . "]") as $item) {
    echo "\"artid\":\"" . $item->artid . "\",";
    echo "\"descr\":\"" . htmlspecialchars($item->descr) . "\",";
    echo "\"price\":"   . $item->price . "";		
  } 
}
else {
  echo "\"error\":\"no data\"";
}

echo "}";
?>

Die Antwort zur ID 2 ist ein JSON-Objekt:

{
  "artid": "B2002",
  "descr": "Description here",
  "price":  8.49	
}