2015-07-11 458 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命名空间的正确方法。