Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php:xml解析错误-非对象_Php_Xml_Parsing_Getelementsbytagname - Fatal编程技术网

php:xml解析错误-非对象

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

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

致命错误:对中的非对象调用成员函数item()。。。第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>";   
$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
”;

如何解决此问题?

您不能期望所有
都在每个
中。根据:

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