2011-08-08 10 views
0

私はsalesforceが初めてです。 PHPで堪能ですが、私はxml解析を行っていません。私はこのファイルを消費することができます。 Salesforceのオブジェクトが変化したときにそれが作成されます:私はSFの名前空間の値を取り、データベースを更新できるようにPHPのsalesforceの名前空間でSoapメッセージを消費するには

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

は、私はそれを解析する必要があります。私はSimpleXMLを使ってネームスペースのnoを読むことができますが、ネームスペースの値を読み取ることができませんでした。誰かがこれを行う方法の例のコードやチュートリアルを教えてくれますか?

答えて

0

それはSalesforceのOutbound Messaging機能からのSOAPメッセージです。単なるXMLとして扱うのではなく、このようなSOAPメッセージを処理するように設計されているため、Salesforceで提供されているWSDLにネイティブのPHP SoapServerを使用してみてください。 WSDLは、セットアップ|作成|ワークフロー&承認|送信メッセージ| |エンドポイントWSDL。対応するPHP SoapClientを使用し、sf:namespaceを処理してSObjectオブジェクトに変換するためのユーティリティを持つSalesforce PHP Clientを参照することもできます。アウトバウンドメッセージを処理できるように、クライアントではなくサーバーとして機能するようにツールキットを再配線するのは難しいことではありません。

0

PHPのSimpleXMLがこのケースで動作する可能性があります。 children()を使用し、正しい構文を使用するだけです。

したがって、Salesforceの送信メッセージ内のフィールド値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 

を、私がしなければならないsamesコードとxmlとの記事を書きます理解しやすい

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

あなたが提出された値を読み取ることができたら、PHPと他のデータベースやテキストファイルに保存することができます。

関連する問題