簡體   English   中英

XML中的PHP SOAP響應-如何將其讀取為變量

[英]PHP SOAP response in XML - how to read it as variable

我從SOAP WSDL調用得到響應:

$client = new SoapClient($settings['address']);
$params = new stdClass();
$params->Username = $settings['username'];
$params->Password = $settings['password'];
var_dump($client->Get_Brands($params));

以下是回應。 如何實際在PHP中閱讀它? 我是否需要使用DOMDocument遍歷它,還是有將SOAP結果返回到對象或數組中的東西?

<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Table" msdata:UseCurrentLocale="true">
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="Table">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="ID" type="xs:decimal" minOccurs="0"/>
                            <xs:element name="Description" type="xs:string" minOccurs="0"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>

<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    <DocumentElement xmlns="">
        <Table diffgr:id="Table1" msdata:rowOrder="0">
            <ID>1</ID>
            <Description>Alfa Romeo</Description>
        </Table>

        <Table diffgr:id="Table2" msdata:rowOrder="1">
            <ID>2</ID>
            <Description>Alpina</Description>
        </Table>
    </DocumentElement>
</diffgr:diffgram>

您應該將有效的WSDL定義作為SoapClient()的第一個參數傳遞。 您還可以設置一些特定的選項作為第二個參數(例如soap_version)。 通常,不需要解析SOAP響應-您應該獲取某種類型的方法結果。 但是,如果無效的SOAP響應SoapClient無法自動識別和解析,則可能需要使用DOMDocument或SimpleXML進行手動解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM