SimpleXML bunu nasıl parse yardım?

6 Cevap php

Ben herhangi bir xml projeleri yapmadıysanız, bu yüzden bu verilerle ne tam olarak emin değilim ...

Ben salesforce için bir istek yapmak için curl kullanıyorum, ve onlar bana ayrıştırmak için gereken bir cevap geri ver. Ben SimpleXML kullanmak istiyorum. İşte yanıtı parçası:

<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>
asdfasdf@gmail.com
</userName>
<userTimeZone>
America/Chicago
</userTimeZone>
<userType>
Standard
</userType>
<userUiSkin>
Theme3
</userUiSkin>
</userInfo>
</result>
</loginResponse>
</soapenv:Body>
</soapenv:Envelope>

Her neyse, ben içine (biz veri diyeceğiz) bu şeyler beslemek bekleniyor

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

Ve bu $ sonuçları-> body-> loginResponse-> bla> filan olurdu, bana geri tüm verileri verecek ... ve daha sonra belirli bölümlerine ulaşmak için ...

Ama bu gerçekten, bana geri sadece boş bir basit xml nesnesi şey vererek değil, bana vermiyor ...

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.

Yardım!

6 Cevap

SimpleXML alanlı XML için özel bir tedaviye ihtiyacı vardır (ref.)

Mate,

Adı alanlarda genellikle isim alanlı elemanlar dönmek için çocukları kullanarak bir arama yapmak için gerektirir. Ben php SoapClient gibi bir sabun istemci kullanarak öneriyoruz, ama bir diğer olası seçenek var önce çünkü ben hiç kullanmadım.

$results = simplexml_load_string($data);
$xml = $results->children('http://schemas.xmlsoap.org/soap/envelope/');
var_dump($xml);

Ben nasıl çalışır inanıyorum.

Bu değer ne için, size bu görev için PHP SoapClient kullanarak daha kolay bir zaman bulabilirsiniz. O'Reilly bir good tutorial PHP SOAP vardır.

Ayrıca Salesforce.com SOAP arama yapmak için PHP Toolkit çıkış

Ben Salathe tarafından sözdizimi takip etmeye çalışıyorum. Ama children('soapenv', TRUE) Benim için çalışmalarını doens't, Jason children('http://schemas.xmlsoap.org/soap/envelope/ ') iş.

Bu nedenle, Salesforce Giden Mesajı alan değeri CreatedDate okumak için, ben aşağıdaki kodu gerekir:

$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')->CreatedDate

Bunu nasıl çalıştığını anlamanıza yardımcı olmak için, ben sames kodu ve anlamak daha kolay olacaktır xml ile bir yazı yazmak.

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