php:xml解析错误-非对象
我检查了很多问题,但没有找到解决问题的答案。 我有很多xml/rss地址需要在mysql数据库中解析。 它在大多数xml地址上运行良好。但有时,一些地址会产生这样的错误 致命错误:对中的非对象调用成员函数item()。。。第61行 这条线是:php:xml解析错误-非对象,php,xml,parsing,getelementsbytagname,Php,Xml,Parsing,Getelementsbytagname,我检查了很多问题,但没有找到解决问题的答案。 我有很多xml/rss地址需要在mysql数据库中解析。 它在大多数xml地址上运行良好。但有时,一些地址会产生这样的错误 致命错误:对中的非对象调用成员函数item()。。。第61行 这条线是: $item_title=$x->item($n)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue; 完整代码: $url
$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>";
$url=array(
"http://www.example.com/rss",
..../*此url来自数据库*/
"http://www.example.com/rss",
);
$q=0;
对于($j=0;$jload($url[$j]);
//从“”获取元素
$channel=$xmlDoc->getElementsByTagName('channel')->项(0);
$channel\u title=$channel->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;
$channel\u 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');
对于($n=0;$n<$x->length;++$n){
/*这条线有问题*/
$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\u title']=$item\u title;
$query[$q]['field']=“xml”;
$query[$q]['id']=$item\u link;
$query[$q]['description']=$item\u desc;
++$q;
}
}
foreach($queryas$section=>$item)
foreach($key=>$value的项目)
echo“$section:\t$key\t:$value
”;
如何解决此问题?您不能期望所有
、
和
都在每个
中。根据:
项目的所有元素都是可选的,但是必须至少有一个标题或说明