2010-02-20 59 views
0

我有这样的代码/函数方法,在PHP类的一部分:XML解析

function defaulthome(){ 


    $fp = null; 
    $err =''; 
    $xml_parser = xml_parser_create();  
    $rss_parser = new Rssparser();  
    xml_set_object($xml_parser,&$rss_parser);  
    xml_set_element_handler($xml_parser, "startElement", "endElement");  
    xml_set_character_data_handler($xml_parser, "characterData");  
    $fp = fopen("http://gulfnews.com/cmlink/business-rss-feed-1.446098?localLinksEnabled=false","r"); 

     if(!$fp) $err = "Error reading RSS data."; 
     else { 

      $count = 0; 

      while ($data = fread($fp, 4096) && $count<10) { 
       xml_parse($xml_parser, $data, feof($fp)) or $err=xml_error_string(xml_get_error_code($xml_parser)); 


       $count++; 
      } 


    } 

    fclose($fp);  
    xml_parser_free($xml_parser); 

    $content_sect2 = $this->tnjn->render('forms/landlords_prompt.phtml'); 
    $context = array('content1_title'=>'Welcome to my website','content1_article'=>"test article", 'feeds'=>$err); 
    $output = $this->tnjn->render("default.phtml", $context); 
    return $output; 

}

我没有得到的结果和错误我已经是空文件!有谁知道哪部分代码是问题?

非常感谢!

+0

抱歉,我刚刚解决了我自己。在$ data = fread()的同时,应该首先在&& $ count之前限定该部分。对不起大家。 – jan 2010-02-20 17:18:42

+0

你似乎没有对实际解析的数据做任何事情,你似乎只是在做任何错误($ err)。 – 2010-02-20 17:19:55

+0

是的,我正在测试它的任何错误 – jan 2010-02-24 14:59:35

回答

0

看看是否打开错误报告提供的任何信息。 error_reporting(E_ALL);

0

你为什么试图用fopen得到xml? 而是尝试使用simplexml_load_file()获取xml;

if (!$xml = simplexml_load_file("http://domain.com/rss.xml")) 
{ 
      echo('Unable to load or parse search results feed'); 
     } 
     if (!count($entries = $xml->entry)) { 
      echo('No entry found'); 
     } 
     for($i=0;$i<count($entries);$i++) 
     { 
      echo $entries->autor; 
     }