I have tried various methods as seen in here and in here and many more.
I even tried the function in here.
The XML looks something like this:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><a:Action s:mustUnderstand="1">http://tempuri.org/IFooEntryOperation/SaveFooStatusResponse</a:Action></s:Header><s:Body><SaveFooStatusResponse xmlns="http://htempuri.org/"><SaveFooStatusResult xmlns:b="http://schemas.datacontract.org/2004/07/FooAPI.Entities.Foo" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><b:AWBNumber>999999999</b:AWBNumber><b:IsError>true</b:IsError><b:Status><b:FooEntryStatus><b:StatusCode>Foo_ENTRY_FAILURE</b:StatusCode><b:StatusInformation>InvalidEmployeeCode</b:StatusInformation></b:FooEntryStatus></b:Status></SaveFooStatusResult></SaveFooStatusResponse></s:Body></s:Envelope> And here's one example of my code (I have a dozen variations):
$ReturnData = $row["ReturnData"]; // string frm a database if (strpos($ReturnData, "s:Envelope") !== false){ $ReturnXML = new SimpleXMLElement($ReturnData); $xml = simplexml_load_string($ReturnXML); $StatusCode = $xml["b:StatusCode"]; echo "<br>StatusCode: " . $StatusCode; $IsError = $xml["b:IsError"]; echo "<br>IsError: " . $IsError; } Another option I tried:
$test = json_decode(json_encode($xml, 1); //this didn't work either I either get an empty array or I get errors like:
"Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML"
I have tried so many things, I may lost track of where my code is right now. Please help - I am really stuck...
I also tried:
$ReturnXML = new SimpleXMLElement($ReturnData); foreach( $ReturnXML->children('b', true)->entry as $entries ) { echo (string) 'Summary: ' . simplexml_load_string($entries->StatusCode->children()->asXML(), null, LIBXML_NOCDATA) . "<br />\n"; }
podorbis a namespace, right?