I am new to salesforce. Proficient in php but I haven’t done any xml parsing. I have this file which I can consume. It is created when a salesforce object changes:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<notifications xmlns="http://soap.sforce.com/2005/09/outbound">
<OrganizationId>00D30000000opwSEAQ</OrganizationId>
<ActionId>04k30000000L6QPAA0</ActionId>
<SessionId xsi:nil="true"/>
<EnterpriseUrl>https://na1-api.salesforce.com/services/Soap/c/22.0/00D30000000opwS</EnterpriseUrl>
<PartnerUrl>https://na1-api.salesforce.com/services/Soap/u/22.0/00D30000000opwS</PartnerUrl>
<Notification>
<Id>04l3000000JbKClAAN</Id>
<sObject xsi:type="sf:Account" xmlns:sf="urn:sobject.enterprise.soap.sforce.com">
<sf:Id>0013000000ooziWAAQ</sf:Id>
<sf:BillingCity>New York</sf:BillingCity>
<sf:BillingCountry>US</sf:BillingCountry>
<sf:BillingPostalCode>10000</sf:BillingPostalCode>
<sf:BillingState>New York</sf:BillingState>
<sf:BillingStreet>302 E xxx St Apt C</sf:BillingStreet>
<sf:FN__Mapping_Status__c>Not Located Yet</sf:FN__Mapping_Status__c>
<sf:IsDeleted>false</sf:IsDeleted>
<sf:Member_Status__c>Active</sf:Member_Status__c>
<sf:Name>Joel Test</sf:Name>
</sObject>
</Notification>
</notifications>
</soapenv:Body>
</soapenv:Envelope>
I need to parse it so that I can take the values in the sf namespace and update a database. I can use SimpleXML to read stuff no in namespace, but I haven’t been able to read namespace values. Can someone point me to example code or tutorial on how to do this?
It looks like that is a SOAP message from the Outbound Messaging feature in Salesforce. Instead of treating it as just XML, try using the native PHP SoapServer with the WSDL provided in Salesforce, as it is designed to handle SOAP messages like this. You can get the WSDL at Setup | Create | Workflow & Approvals | Outbound Messages | | Endpoint WSDL. You might also want to look at the Salesforce PHP Client, which uses the corresponding PHP SoapClient and has a utility for handling the sf: namespace and converting to a SObject object. It shouldn’t be too hard to rewire the toolkit to act as a server instead of a client so you can handle the Outbound Messages.