2011-11-28 55 views
1

我在查詢XML文件用PHP這樣的:檢查如果XML加載simplexml_load_string

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

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

返回與含有 xml文檔內所保持的數據的屬性類的SimpleXMLElement的對象。出錯時,它將返回 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()在功能。

+0

嘿@galen它給了我錯誤警告:simplexml_load_string()[function.simplexml-load-string]:實體:第3行:解析器錯誤:開始標記預期,'<'在/ opt/lampp/htdocs中找不到/test2.php在線 警告:simplexml_load_string()[function.simplexml-load-string]:在/opt/lampp/htdocs/test2.php上線37 警告:simplexml_load_string()[function.simplexml-load ('$ xml){print_r(')]:^ in /opt/lampp/htdocs/test2.php on line 37 error' in this code' $ xml = simplexml_load_string(file_get_contents(「test.xml」)); if(!$ xml){print_r 'error');}'。我想檢查是否在xml文件中有任何元素。 – 2013-01-25 07:42:30

相關問題