2013-12-21 42 views
0

所以我得到了一個簡單的函數,但我試圖發展我的OOP經驗,並試圖確保我可以使用我的代碼而無需編輯所有內容。在對象中獲取數據 - SimpleXML

這裏是我的簡單功能

$xmlfeed = file_get_contents('/forum/syndication.php?limit=3'); 

$xml = new SimpleXMLElement($xmlfeed); 
$result = $xml->xpath('channel/item/title'); 

while(list(, $node) = each($result)) { 
    echo $node; 
} 

現在爲止我得到了這一點:

class ForumFeed { 
    private function getXMLFeeds($feed = 'all'){ 
     /* 
      Fetch the XML feeds 
     */ 
     $globalFeedXML = file_get_contents('/forum/syndication.php?limit=3'); 
     $newsFeedXML = file_get_contents('/forum/syndication.php?fid=4&limit=3'); 

     /* 
      Turn feed strings into actual objects 
     */ 
     $globalFeed = new SimpleXMLElement($globalFeedXML); 
     $newsFeed = new SimpleXMLElement($newsFeedXML); 

      /* 
       Return requested feed 
      */ 
      if ($feed == 'news') { 
       return $newsFeed; 
      } else if ($feed == 'all') { 
       return $globalFeed; 
      } else { 
       return false; 
      } 

    } 
    public function formatFeeds($feed) { 
     /* 
      Format Feeds for displayable content.. 
      For now we're only interested in the titles of each feed 
     */ 
     $getFeed = $this->getXMLFeeds($feed); 

     return $getFeed->xpath('channel/item/title'); 
    } 
} 

$feeds = new ForumFeed(); 

但是試圖echo $feeds->formatFeeds('all');當它不返回任何東西。結果是空白的。

我在做什麼錯?

var_dump($feeds->formatFeeds('all'));返回

array(3) { 
    [0]=> 
    object(SimpleXMLElement)#3 (0) { 
    } 
    [1]=> 
    object(SimpleXMLElement)#4 (0) { 
    } 
    [2]=> 
    object(SimpleXMLElement)#5 (0) { 
    } 
} 
+0

請指定標籤中的語言 – OldProgrammer

+0

糟糕。謝謝@OldProgrammer – devs

+0

你試着回顯一個數組,通常給你'「數組」(作爲字符串)。另請參閱:http://php.net/language.types.string#language.types.string.casting - 也嘗試隔離您的問題。它從來不是整個劇本。因此,暫時擱置您的腳本,然後創建一個新腳本,僅用於您想要在此處詢問的問題,只需要儘可能少的代碼來展示問題。也嘗試瞭解你自己,發生了什麼,爲什麼會發生。 – hakre

回答

1

根據脈動熱管文檔的SimpleXMLElement :: XPath返回SimpleXMLElements的陣列或假上錯誤。也許var_dump($feeds->formatFeeds('all'));打印出一些你可以用來調試的東西。

編輯:XPath查詢返回結果,因此可能在查詢中存在邏輯錯誤,或者返回的元素沒有內容。

+0

謝謝,我用結果編輯了我的問題。 – devs

+0

如果您使用XPath-Query「//頻道/項目/標題」,它會起作用嗎? – user2610529