2014-09-29 3 views
1

я получаю ответ от SOAP WSDL вызова:PHP ответ SOAP в XML - как читать его как переменную

$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

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

+0

Что такое определение WSDL и почему я должен его передать? Второй аргумент того, что и что еще нужно пройти? Что вы не имеете в виду для разбора? Я получил webservice, который просто возвращает XML-строку базы данных, и это единственный способ получить эту информацию, но не существуют ли некоторые классы, которые упрощают сериализацию XML-результатов для программистов? –

Смежные вопросы