3

SOAPレスポンスとその種類に詳しくないので、タイトルを間違えていたら大変申し訳ありません。しかし、それは WSDL 応答だと思います。少なくとも、WSDL リンクから取得しました...

次のURLがあります http://somedomain.com/j.svc?wsdl

そして、curl_multi を使用してリクエストを行った後、次のレスポンスが返ってきました。読みやすくするため、応答は 2 つの結果に短縮されました

応答は次のとおりです。

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <GetJourneyListResponse xmlns="http://tempuri.org/">
          <GetJourneyListResult xmlns:a="http://schemas.datacontract.org/2004/07/DreamFlightWCF" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
              <a:Journey>
                 <a:FromAirport>LHR</a:FromAirport>
                 <a:TotalPrice>146</a:TotalPrice>
              </a:Journey>
              <a:Journey>
                 <a:FromAirport>LHR</a:FromAirport>
                 <a:TotalPrice>155</a:TotalPrice>
              </a:Journey>
           </GetJourneyListResult>
      </GetJourneyListResponse>
  </s:Body>
</s:Envelope>

PHP を使用して結果を解析する機会はありますか? 私はStackOverflowを含む多くの検索を行い、ここで私が見つけたものを見つけました.

上記の応答を解析するには、次のコードを使用できます。

$xml = simplexml_load_string($result);
$xml->registerXPathNamespace('flight','http://schemas.datacontract.org/2004/07/DreamFlightWCF');
   foreach ($xml->xpath('//flight:Journey') as $item){
     print_r($item);
   }

上記の PHP コード片は部分的に正しいようです。「Journey」の正しい量を取得しますが、$item 自体は空です。

解決策はありますか?SoapClient を使用して結果を取得することはお勧めしません。curl_multi から移動できません。私はすでに結果を持っており、それを解析する必要があります。前もって感謝します

4

2 に答える 2

-1

最初にSOAP応答の解析を試してから、 Googleを試してください。

于 2012-11-25T15:51:20.437 に答える