Ik probeer een XML bestand welke naar me server wordt gestuurd te 'parsen' via preg_match.

De XML haal ik via PHP zo op:
$arr = file_get_contents("php://input");


Voorbeeld XML welke naar mijn PHP wordt gestuurd:

<?xml version="1.0" encoding="UTF-8"?>
<xsi:Event xsi1:type="xsi:SubscriptionEvent" xmlns:xsi="***" xmlns:xsi1="http://www.w3.org/2001/XMLSchema-instance">
   <xsi:eventID>2e4d1d4f-be02-4023-a73e-***</xsi:eventID>
   <xsi:sequenceNumber>150</xsi:sequenceNumber>
   <xsi:userId>call_logging@***.nl</xsi:userId>
   <xsi:externalApplicationId>xml1</xsi:externalApplicationId>
   <xsi:subscriptionId>55b13324-aa66-4231-a2a8-****</xsi:subscriptionId>
   <xsi:httpContact>
      <xsi:uri>http://***/admin/listener.php</xsi:uri>
   </xsi:httpContact>
   <xsi:targetId>U_245@***.nl</xsi:targetId>
</xsi:Event>


En via een aantal preg_match zaken haal ik de informatie eruit:


preg_match('/<xsi:targetId>(.*?)<\/xsi:targetId>/s', $arr, $targetid); // GET Target ID
preg_match('/<xsi:subscriptionId>(.*?)<\/xsi:subscriptionId>/s', $arr, $subscriptionid); // GET Subscription ID
preg_match_all('/<xsi:callId>(.*?)<\/xsi:callId>/s', $arr, $callId); // GET callId


Nu werkt de preg_match targetId niet. Variable $targetid[1] bevat 'xml1' in plaats van 'U_245@***.nl'. Hij pakt dus vanuit de XML de tag xsi:externalApplicationId en plaats van xsi:targetId...

Hoe kan dat nou???????
Je zal trouwens moeten zoeken naar "simlplexml namespace".

Die <xsi:Event ... maakt het wat lastiger.

Reageren