2017-09-20 20 views
0

私は適切に怒鳴るSOAP応答に対処で問題を抱えているを読んで、私はそれがが原因だと思うDSPTrackingNumber「一部...SOAPからの応答、XML

は、誰もが、私はを参照してください可能性がどのように私の例を示すことができたことができます」 「

$xml_resp = "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> 
     <soap:Body> 
     <ns2:GenerateLabelResponse 
     xmlns:ns2='http://cpgm.dpdhl.com/returnit/ws/generate_label'> 
     <label>base64</label> 
     <DSPTrackingNumber>409388775152</DSPTrackingNumber> 
     <responseText>Label generated.</responseText> 
     <responseCode>0</responseCode> 
     </ns2:GenerateLabelResponse> 
     </soap:Body> 
     </soap:Envelope>"; 

EDIT:?私はこれを試してみました

$xml = simplexml_load_string($xml_resp); 

$xml->registerXPathNamespace("ns2", "http://cpgm.dpdhl.com/returnit/ws/generate_label"); 

$RespData = $xml->xpath("//ns2"); 

echo "DSPTrackingNumber=".$RespData->DSPTrackingNumber; 
+0

は、あなたが何をしようとしたことがありますか?どうすればhttp://php.net/manual/en/class.domdocument.phpやhttp://php.net/manual/en/book.simplexml.php? – Sammitch

+0

@Sammitchはい私は最も近いものがregisterXPathNamespaceのものだとは思いますが、いくつかのオプションを試しましたが、おそらくNamespaceが間違っています...私の最初の投稿を編集しました。ガイドに感謝します。 –

答えて

0

あなただけのDSPTrackingNumberをしたい場合は、名前空間を使用する必要はありません。それは要素で使われていないので。だから、

-

$xml_resp = "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> 
     <soap:Body> 
     <ns2:GenerateLabelResponse 
     xmlns:ns2='http://cpgm.dpdhl.com/returnit/ws/generate_label'> 
     <label>base64</label> 
     <DSPTrackingNumber>409388775152</DSPTrackingNumber> 
     <responseText>Label generated.</responseText> 
     <responseCode>0</responseCode> 
     </ns2:GenerateLabelResponse> 
     </soap:Body> 
     </soap:Envelope>"; 

$xml = simplexml_load_string($xml_resp); 

//$xml->registerXPathNamespace("ns2", "http://cpgm.dpdhl.com/returnit/ws/generate_label"); 

$RespData = $xml->xpath("//DSPTrackingNumber"); 

echo "DSPTrackingNumber=".$RespData[0]; 

与える...

DSPTrackingNumber=409388775152