我正在使用php查询xml文件:
public function trackOrderAction()
{
$request = Mage::getResourceModel( 'order/request' );
$request->setOrder($this->getRequest()->getParam('increment_id'));
$response = $request->submit(true);
$xml = simplexml_load_string($response);
$items = count($xml->OrderItems->OrderItem);
}
xml没有立即就绪,所以如果人们在准备好之前尝试使用该函数,则会出现错误,因为它试图获取非对象的属性。我的问题是检查xml响应是否有正确的方法是什么,如果没有则停止该功能?
我尝试过像
这样简单的事情 if (empty($xml)){
die();
} else {
$items = count($xml->OrderItems->OrderItem);
}
但这没有用。关于如何检查是否加载了xml的任何想法?
答案 0 :(得分:1)
来自http://us.php.net/manual/en/function.simplexml-load-string.php
返回类SimpleXMLElement的对象,其属性包含 xml文档中保存的数据。在错误时,它将返回 FALSE。
public function trackOrderAction()
{
$request = Mage::getResourceModel( 'order/request' );
$request->setOrder($this->getRequest()->getParam('increment_id'));
$response = $request->submit(true);
$xml = simplexml_load_string($response);
if ( !$xml ) {
return false;
}
$items = count($xml->OrderItems->OrderItem);
}
如果出现错误,它将返回false。如果simplexml_load_string
失败并返回false,则立即失败。否则继续使用该功能的其余部分。在函数中永远不会die()
。