PHP SOAP ответ в XML — как читать его как переменную

Я получаю ответ от SOAP WSDL call:

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

1

Решение

Вы должны передать правильное определение WSDL в качестве первого аргумента SoapClient ().
Вы также можете установить некоторые конкретные параметры в качестве второго аргумента (например, soap_version).
Обычно нет необходимости анализировать SOAP-ответ — вы должны получить результат метода определенного типа.
Однако, если ответ SOAP в недопустимом SoapClient не может распознать и проанализировать его автоматически, вам может потребоваться проанализировать его вручную, используя DOMDocument или SimpleXML.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]