繁体   English   中英

如何在PHP的Salesforce中使用命名空间使用Soap消息

[英]How can I Consume a Soap message with Namespace from salesforce in PHP

我是Salesforce的新手。 精通php,但我还没有完成任何xml解析。 我有这个文件可以使用。 当salesforce对象更改时创建:

<?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>

我需要对其进行解析,以便可以使用sf名称空间中的值并更新数据库。 我可以使用SimpleXML读取名称空间中的所有内容,但无法读取名称空间值。 有人可以给我指出示例代码或有关如何执行此操作的教程吗?

PHP的SimpleXML可能适用于这种情况。 只需使用children()并使用正确的语法即可。

因此,要读取Salesforce Outbound Message中的字段值BillingCity,可以使用以下代码:

$rcXML->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->children('http://soap.sforce.com/2005/09/outbound')->notifications->Notification->sObject->children('urn:sobject.enterprise.soap.sforce.com')->BillingCity

为了帮助您理解它是如何工作的,我写了一篇使用相同代码和xml的文章,这些文章应该更容易理解。

http://amigotechnotes.wordpress.com/2013/11/16/parse-xml-with-namespace-by-simplexml-in-php/

读取字段值之后,可以使用PHP将其存储到其他数据库或文本文件中。

PHP的SimpleXML不适用于读取名称空间信息。 看到这个-http://www.w3schools.com/php/php_xml_simplexml.asp 而是尝试像这样的东西http://www.php.net/manual/zh/function.xml-parser-create-ns.php

看起来这是来自Salesforce中“出站消息传递”功能的SOAP消息。 除了将其视为XML之外, 还应尝试将本机PHP SoapServer与Salesforce中提供的WSDL一起使用,因为它旨在处理此类SOAP消息。 您可以在安装程序中获得WSDL。 创建| 工作流程与批准| 出站邮件| | 端点WSDL。 您可能还需要查看Salesforce PHP客户端 ,它使用相应的PHP SoapClient并具有用于处理sf:命名空间并将其转换为SObject对象的实用程序。 重新连接工具箱以充当服务器而不是客户端,应该不难,因此您可以处理出站消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM