1

石鹸応答の解析を手伝ってくれる人はいますか。私は多くの方法を試しましたが、それは私を助けませんでした。立ち往生しています。応答があります:

  <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:body>
    <ns2:findflightresponse xmlns:ns2="http://cxf.apache.org">
      <return>
        <clstobook>K</clstobook>
        <flightsegment>
          <arrivalairport>
            <locationcode>LHR</locationcode>
            <terminal>1</terminal>
          </arrivalairport>
          <arrivaldatetime>2013-09-01T16:15:00</arrivaldatetime>
          <bookingclassavaillist>
            <resbookdesigcode>W</resbookdesigcode>
            <resbookdesigquantity>0</resbookdesigquantity>
            <resbookdesigstatuscode>3</resbookdesigstatuscode>
            <rph>1</rph>
          </bookingclassavaillist>
          <bookingclassavaillist>
            <resbookdesigcode>U</resbookdesigcode>
            <resbookdesigquantity>0</resbookdesigquantity>
            <resbookdesigstatuscode>2</resbookdesigstatuscode>
            <rph>1</rph>
          </bookingclassavaillist>
          <departureairport>
            <locationcode>VKO</locationcode>
          </departureairport>
          <departuredatetime>2013-09-01T15:10:00</departuredatetime>
          <equipment>
            <airequiptype>738</airequiptype>
          </equipment>
          <flightnumber>353</flightnumber>
          <marketingairline>
            <code>UN</code>
          </marketingairline>
          <marketingcabin>
            <meal>B</meal>
          </marketingcabin>
          <rph>1</rph>
          <stopquantity>0</stopquantity>
        </flightsegment>
        <lateforsale>false</lateforsale>
        <noseats>false</noseats>
      </return>
    </ns2:findflightresponse>
  </soap:body>
</soap:envelope>

私は次のように試しました:

$xml_response = $ch_result;
$xml = simplexml_load_string($xml_response,NULL,NULL,"http://schemas.xmlsoap.org/soap/envelope/");
$xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/');
$xml->registerXPathNamespace('ns2', 'http://cxf.apache.org');
print_r($xml);

しかし、それは次を返します:

SimpleXMLElement Object ( [Body] => SimpleXMLElement Object ( ) ) 

私はxmlファイルを扱うことはありません。これが xml soap の最初の練習であり、多くの知識がありませんでした。誰でも私を助けることができますか?

4

1 に答える 1

0

この方法を試すことができます:

        $xml = str_replace("soap:", "", $xml);
        $xml = str_replace("ns2:", "", $xml);
        $xml = str_replace("ns3:", "", $xml);
        $xml = str_replace("&#0", "", $xml);

        $array = xml2array($xml);
        $array = $array['envelope']['body']['findflightresponse'];

        print_r($array, true);

それがあなたを助けることを願っています。

于 2013-09-01T08:11:59.480 に答える