PHP警告:simplexml_load_string():名称空间错误:未定义Envelope上的名称空间前缀soap

时间:2015-07-11 10:12:03

标签: php soap

我们有人写了一个脚本来为我们提供托运人的报价。它可以工作,但我们在日志中不断收到此错误:

If($connected ==='yes'){//your connection statement
   ?>
       <script>window.location.replace("whatever_page");</script>
   <?
}

以下是相关代码:

[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);

2 个答案:

答案 0 :(得分:0)

嗨请试试这个案例,因为我没有在我的身边发出这样的警告。

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

答案 1 :(得分:0)

您使用str_replace显示的代码行由于某种原因删除了部分XML(SOAP)响应,使其无效。日志中的消息警告您有关该无效数据的信息。

如果代码的其余部分有效,您可以不管它 - 它是警告,而不是错误。然而,这种情况发生的事实可能表明其余代码编写得很糟糕 - 它可能是依赖于该行,因为编写它的人并不知道处理XML命名空间的正确方法。