Dorvalla Dorvalla - 1 year ago 93
PHP Question

Specific field from XML into PHP

I am pretty new to XML sheets in combination with PHP. I am trying to pull data from an XML file that is being returned to me via SOAP call.

My XML is being returned as this.

commented out some of the details

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="" xmlns="" xmlns:xsi="">
<currencySymbol>€</currencySymbol> ... </userInfo>

So I am trying to pull out of this the sessionID

// UP HERE SOAP CALL --- return data
} else {
$response = curl_exec($soap_do);
// print($response); <-- see result XML

// grabbing the sessionid
$xmlresponse = new SimpleXMLElement($response);
$test = $xmlresponse->result->sessionId['value'];
echo $test;

This returns blank, but when I start adding the LoginResponse and the Soapenv (body and envelope), i get an error about that I am trying to get a propperty of non-object. I am not sure what I am doing wrong here.

Answer Source

With SimpleXML you can use SimpleXMLElement::children to find children by an XML namespace (here soapenv).

For your case it would something like

$xmlresponse = new SimpleXMLElement($response);     
$response = $xmlresponse->children('soapenv', true)->Body->children('', true)->loginResponse->result->sessionId;

Which results in

object(SimpleXMLElement)#4 (1) {
  string(4) "...."
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download