获取对象中的数据 - SimpleXML

时间:2013-12-21 17:30:46

标签: php xml oop

所以我得到了一个有效的简单函数,但我正在尝试使用OOP来改进我的经验并尝试确保我可以使用我的代码而无需编辑所有内容。

这是我的简单功能

$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) {
  }
}

1 个答案:

答案 0 :(得分:1)

根据PHP文档,SimpleXMLElement :: xpath返回SimpleXMLElements数组或错误时返回false。也许var_dump($feeds->formatFeeds('all'));打印出你可以用来调试的内容。

编辑:XPath查询返回结果,因此查询中可能存在逻辑错误,或者返回的元素没有内容。