如何解决试图用simplexmlphp解析
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring xml:lang="en">MerchantException</faultstring>
<detail>store id is missing</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我尝试了以下代码来获取'detail'标签,但始终出现空白:
$xml = simplexml_load_string($result);
$posts = $xml->children('SOAP-ENV',true)->Body->children('SOAP-ENV',true)->Fault;
foreach ($posts as $post)
{
echo $post->detail;
}
感激的帮助
解决方法
使用children()
时,需要对SimpleXML所使用的名称空间进行某种更改。由于<detail>
在默认名称空间中,因此需要(再次)将其使用的名称空间更改为默认名称空间。通过使用children()
且未定义命名空间...
echo $post->children()->detail;
测试代码是...
$result = '<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header />
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring xml:lang="en">MerchantException</faultstring>
<detail>store id is missing</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>';
$xml = simplexml_load_string($result);
$posts = $xml->children('SOAP-ENV',true)->Body->children('SOAP-ENV',true)->Fault;
foreach ($posts as $post)
{
echo $post->children()->detail;
}
显示...
store id is missing
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。