0

我正在尝试解析http://www.mpgh.net/forum/external.php?type=RSS2&forumids=175的 XML, 但我收到此错误,找不到什么问题。

注意:尝试在第 9 行的 C:\xampp\htdocs\crossfire\index.php 中获取非对象的属性

<?php  
$rss = simplexml_load_file('http://www.mpgh.net/forum/external.php?type=RSS2&forumids=175'); 

for($i=0;$i<10;$i+=1) {
    $namespaces = $rss->getNameSpaces(true);
    $dc = $rss->children($namespaces['dc']);

    echo "Title: " . $rss->channel->item[$i]->title . "<br>";
    echo "Creator: " . $dc->channel->item[$i]->creator . "<br>";
    echo "Link: " . $rss->channel->item[$i]->link . "<br><br>";
}  

还有我的第二个问题。

为什么这段代码只能在其他页面上正常工作http://www.mpgh.net/forum/external.php?type=RSS2&forumids=175而不是在其他页面上http://www.mpgh.net/forum/external.php?type=RSS2&forumids=168

注意:尝试在第 7 行的 C:\xampp\htdocs\crossfire\index.php 中获取非对象的属性

<?php
$rss = New DOMDocument();
$rss = simplexml_load_file('http://www.mpgh.net/forum/external.php?type=RSS2&forumids=168'); 

for($i=0;$i<10;$i+=1) {

    if (substr($rss->channel->item[$i]->title, 0, 9) == '[Release]') {
        echo "Title: " . $rss->channel->item[$i]->title . "<br>";
        echo "Link: " . $rss->channel->item[$i]->link . "<br><br>";
    } else {
        echo 'Hoi<br><br>';
    }
}

谢谢。

4

1 回答 1

1

我认为问题在于未设置$i索引$rss->channel->item或不是对象。

试试这个; 它会暴露问题:

$rss = simplexml_load_file('http://www.mpgh.net/forum/external.php?type=RSS2&forumids=175'); 

if ($rss===null || !is_object($rss))
    die('Failed to load xml file.');
if (!is_object($rss->channel))
    die('Channel is not an object!');

foreach ($rss->channel->item as $item)
    if (is_object($item)) {
        $namespaces = $rss->getNameSpaces(true);
        $dc = $rss->children($namespaces['dc']);

        echo "Title: " . $item->title . "<br>";
        echo "Creator: " . $item->creator . "<br>";
        echo "Link: " . $item->link . "<br><br>";
    }
于 2013-08-14T17:37:57.310 回答