检查xml是否加载了simplexml_load_string

时间:2011-11-28 18:29:04

标签: php xml error-handling simplexml

我正在使用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的任何想法?

1 个答案:

答案 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()