2015-07-11 45 views
2

我們有一個人寫一個腳本來從我們的發貨拉出貨報價。它的工作原理,但我們一直在我們的日誌中收到此錯誤:PHP的警告:simplexml_load_string():命名空間錯誤:在信封名稱空間前綴肥皂沒有定義

[10-Jul-2015 17:02:13] PHP Warning: simplexml_load_string(): namespace error : Namespace prefix soap on Envelope is not defined in /home/public_html/shipping/loomisexpress.php on line 321 

[10-Jul-2015 17:02:13] PHP Warning: simplexml_load_string(): <?xml version="1.0" encoding="utf-8"?><soap:Envelope ><soap:Body><RateInqRespons in /home/public_html/shipping/loomisexpress.php on line 321 

[10-Jul-2015 17:02:13] PHP Warning: simplexml_load_string():^in /home/shipping/loomisexpress.php on line 321 

[10-Jul-2015 17:02:13] PHP Warning: simplexml_load_string(): namespace error : Namespace prefix soap on Body is not defined in /home/public_html/shipping/loomisexpress.php on line 321 

[10-Jul-2015 17:02:13] PHP Warning: simplexml_load_string(): <?xml version="1.0" encoding="utf-8"?><soap:Envelope ><soap:Body><RateInqRespons in /home/public_html/shipping/loomisexpress.php on line 321 

[10-Jul-2015 17:02:13] PHP Warning: simplexml_load_string():^in /home/sjenkins/public_html/shop/includes/modules/shipping/loomisexpress.php on line 321 

下面是相關代碼:

$responseXml = str_replace('xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"',"",$responseXml); 
$xml = simplexml_load_string($responseXml); 

很想知道如何解決這個錯誤。

附加代碼:

​​
+1

出於某種原因,str_replace顯式刪除了namesapce定義。 – VolkerK

+0

我知道沒有關於肥皂......你能告訴我我需要如何修改代碼嗎? –

+0

「能否告訴我我需要如何修改代碼」 - 抱歉,我不能。您必須向開發人員詢問爲什麼名稱空間聲明已被刪除。 – VolkerK

回答

0

你好,請嘗試這種情況下,我沒有這樣的警告@我的身邊。

function getMemberName($string) 
{ 
    $XMLRequest = simplexml_load_string($string); 
    return $XMLRequest->Member->Firstname .' '. $XMLRequest->Member->Secondname 
} 
0

的代碼,您演示str_replace該生產線是出於某種原因去除XML(SOAP)響應的一部分,使之無效。日誌中的消息警告您有關該無效數據。

如果代碼的其餘產品,你可能只是不要管它 - 這是一個警告,而不是錯誤。然而,這種情況發生的事實可能是其他代碼寫得不好的一個標誌 - 它可能依賴於該行,因爲寫它的人不知道處理XML命名空間的正確方法。