我一直在绞尽脑汁想出这个。我有一个来自soap调用的XML。我可以回应结果,但我无法弄清楚如何进入并循环数据。我是肥皂新手(正如你所说)。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<ActivityId xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics" CorrelationId="18b2719b-e13a-41d7-ab1c-eb3319a2fd64">a588ead5-ecce-42bb-bcb3-b6f13ddc3846</ActivityId>
</s:Header>
<s:Body>
<GetMBDataResponse xmlns="http://blah.com/APO">
<GetMBDataResult xmlns:a="http://blah.com/APO/GetGuestData" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Project>
<a:ProjectId>12345</a:ProjectId>
<a:AlternateId/>
<a:Name>Summer Vacation</a:Name>
<a:Date>2014-05-17T00:00:00</a:Date>
<a:ProjectType/>
<a:Organization>My Org</a:Organization>
</a:Project>
<a:DeletedProject i:nil="true"/>
<a:Guests>
<a:MBData.BData>
<a:ProjectId>12345</a:ProjectId>
<a:BId>11979066</a:BId>
<a:Name>John Smith</a:Name>
<a:Number>101</a:Number>
<a:First>John</a:First>
<a:Last>Smith</a:Last>
</a:MBDData.BData>
<a:MBData.BData>
<a:ProjectId>12345</a:ProjectId>
<a:BId>11979067</a:BId>
<a:Name>Nancy Wilson</a:Name>
<a:Number>102</a:Number>
<a:First i:nil="true"/>
<a:Last i:nil="true"/>
</a:MBData.BData>
</a:Guests>
</GetMBDataResult>
...
</GetMBDataResponse>
</s:Envelope>
我从cURL返回后尝试simplexml_load_string($xml)
,但我无法弄清楚如何进入并循环访问MBData并获取详细信息。我确信它很明显,但我似乎可以得到它。
更新
这是WSDL的一部分:
<xs:complexType name="Authentication">
<xs:sequence>
<xs:element name="PartnerId" nillable="true" type="xs:string"/>
<xs:element name="UserName" nillable="true" type="xs:string"/>
<xs:element name="Password" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
您将如何构建SoapClient身份验证。我一直得到:致命错误:未捕获的SoapFault异常:[a:InternalServiceFault]对象引用未设置为对象的实例。在/var/www/cron-gg-update.php:36堆栈跟踪:#0 /var/www/cron-gg-update.php(36):SoapClient-&gt; __ soapCall('GetMBData',Array)。< / p>
答案 0 :(得分:0)
为此,您应该使用SOAP库,它可以为您提供数组中的正确输出。
以下是PHP Soap客户端的示例。