php:xml解析错误-非对象


php: xml parse error - non object

我检查了很多问题,但没有找到解决问题的答案。我有很多xml/rss地址需要在mysqldb中解析。它在大多数xml地址上运行良好。但有时,一些地址会产生这样的错误。

致命错误:在中的非对象上调用成员函数项()。。。在线61

行是这样的:

$item_title=$x->item($n)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;

完整代码:

$url = array(
        "http://www.example.com/rss",
          ....      /*This url is from database*/
        "http://www.example.com/rss",
);
$q = 0;
for($j=0;$j<count($url);++$j){
     $xmlDoc = new DOMDocument();
     $xmlDoc->load($url[$j]);        
     //get elements from "<channel>"
     $channel=$xmlDoc->getElementsByTagName('channel')->item(0);
     $channel_title = $channel->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;
     $channel_link = $channel->getElementsByTagName('link')->item(0)->childNodes->item(0)->nodeValue;
     $channel_desc = $channel->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;

     $x=$xmlDoc->getElementsByTagName('item');
     for ( $n = 0 ; $n < $x->length ; ++$n ){ 
     /* this line have a problem */
       $item_title=$x->item($n)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue; 
       $item_link=$x->item($n)->getElementsByTagName('link')->item(0)->childNodes->item(0)->nodeValue;
       $item_desc=$x->item($n)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;
        $query[$q]['xml'] = $url[$j];
        $query[$q]['post_title'] = $item_title;
        $query[$q]['field'] = "xml";
        $query[$q]['id'] = $item_link;
        $query[$q]['description'] = $item_desc;   
            ++$q;
     }  
}

     foreach( $query as $section => $item )
        foreach( $item as $key => $value )
            echo "$section:'t$key't: $value<br>";   

我该如何解决?

不能期望所有<title><link><description>都在每个<item>中。根据RSS规范:

项目的所有元素都是可选的,但必须至少有一个标题或说明。