php - 检查是否用simplexml_load_string加载了xml

标签 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的任何想法?

最佳答案

http://us.php.net/manual/en/function.simplexml-load-string.php

Returns an object of class SimpleXMLElement with properties containing the data held within the xml document. On errors, it will return 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()

关于php - 检查是否用simplexml_load_string加载了xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8300495/

相关文章:

php - 将特定文件夹发送到 HTTPS,并将其余文件夹从非 www 发送到 www,同时保持 Laravel 路由的其余部分正常工作?

javascript - 使用 Fancybox 的谷歌地图可以完美地运行 Firefox,但其他浏览器无法运行

php - 如何将我的聊天室 ID 传递给我的 ajax 调用?

php - 从 $xml 填充 MySQL 数据库

android - 错误膨胀类包含在 PreferenceActivity

python - 导入错误 : cannot import name saxexts

c# - ASP.NET C#中大师的大师方法

php - 我的数据库中的 while 循环正在重复结果。我知道这是我的查询格式不正确。

scala - 使用 Play WSClient 处理 JSON 错误响应

r - R : argument is not numeric or logical: returning NA, as.integer()