Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Salesforce by (11.9k points)

I haven't done any xml projects, so I'm not quite sure what to do with this data...

I'm using curl to make a request to salesforce, and they give me back a response that I need to parse. I want to use simplexml. Here's part of the response:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:partner.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Body>

<loginResponse>

<result>

<metadataServerUrl>

https://na6-api.salesforce.com/services/Soap/m/18.0/

</metadataServerUrl>

<passwordExpired>

false

</passwordExpired>

<sandbox>

false

</sandbox>

<serverUrl>

https://na6-api.salesforce.com/services/Soap/u/18.0/

</serverUrl>

<sessionId>

!AQ4AQLtDIqY.

</sessionId>

<userId>

</userId>

<userInfo>

<accessibilityMode>

false

</accessibilityMode>

<currencySymbol>

$

</currencySymbol>

<orgDefaultCurrencyIsoCode>

USD

</orgDefaultCurrencyIsoCode>

<orgDisallowHtmlAttachments>

false

</orgDisallowHtmlAttachments>

<orgHasPersonAccounts>

false

</orgHasPersonAccounts>

<organizationId>

</organizationId>

<organizationMultiCurrency>

false

</organizationMultiCurrency>

<organizationName>

Ox 

</organizationName>

<profileId>

sdfgsdfg

</profileId>

<roleId>

sdfgsdfg

</roleId>

<userDefaultCurrencyIsoCode xsi:nil="true"/>

<userEmail>

###@gmail.com

</userEmail>

<userFullName>

### ###

</userFullName>

<userId>

asdfasdf

</userId>

<userLanguage>

en_US

</userLanguage>

<userLocale>

en_US

</userLocale>

<userName>

[email protected]

</userName>

<userTimeZone>

America/Chicago

</userTimeZone>

<userType>

Standard

</userType>

<userUiSkin>

Theme3

</userUiSkin>

</userInfo>

</result>

</loginResponse>

</soapenv:Body>

</soapenv:Envelope>

Anyway, I expected to feed that stuff (we'll call it data) into

$results = simplexml_load_string($data);
var_dump($results);

And that would give me all the data back... and then to access specific parts, it would be $results->body->loginResponse->blah->blah...

But It's not giving me that, it's not really giving me anything back, just an empty simple xml object...

So one website made me think I might need an XSLT to read this correctly.
Or something else made me think it's because I don't have at the top.

Help!

1 Answer

0 votes
by (32.1k points)
edited by

It is possible for you to use SimpleXML but it's not as simple as you think due to the use of namespaces (e.g. soapenv). Look into using SimpleXMLElement::children like:

$sxe = new SimpleXMLElement($data);

$login_response = $sxe->children('soapenv', TRUE)->Body->children('', TRUE)->loginResponse->result;

// Now that we have the <loginResponse> lets take a look at an item within it

echo $login_response->userInfo->userEmail;

Go for this in-depth job-oriented salesforce course online! 

Related questions

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...