我试图从XML文件中显示记录。但我得到以下错误:
遇到PHP错误严重性:注意 消息:尝试获取非对象的属性 文件名:controllers / events.php行号:67
xml文件
<events>
<event>
<date>15/06/11</date>
<venue>Parijs - Frankfort</venue>
<name>SuperRunner 2011</name>
<url>cgi-bin/phts.sh/x/xbevwindex.p?xtren=1234&xmlac=np&tpl=sp11</url>
</event>
. . .
. . .
</events>
在我的控制器'events.php'
中function index(){
$data['events'] = $this->readXMLFile();
$data['title'] = "Latest Events";
$this->load->view('events/eventlistxml',$data);
}
function readXMLFile(){
$doc = new DOMDocument();
$doc->load('events.xml');
$events = $doc->getElementsByTagName("event");
$data= array();
foreach($events as $key=>$event):
$dates = $event->getElementsByTagName("date");
$data[$key]['date'] = $dates->item(0)->nodeValue;
$venues = $event->getElementsByTagName("venue");
$data[$key]['venue'] = $venues->item(0)->nodeValue;
$names = $event->getElementsByTagName("name");
$data[$key]['name'] = $names->item(0)->nodeValue;
$names = $event->getElementsByTagName("url");
$data[$key]['url'] = $names->item(0)->nodeValue;
endforeach;
return $data;
}
在视图'events / eventlistxml.php'
中<?php
foreach($events as $key=>$val):
echo $val['date']."<br />";
echo $val['venue']."<br />";
echo $val['url']."<br />";
endforeach;
?>
这是由于xml cgi-bin / phts.sh / x / xbevwindex.p中的url模式?xtren = 1234&amp; xmlac = np&amp; tpl = sp11 有没有解决此错误的方法?
感谢您的支持。
答案 0 :(得分:1)
我建议先检查DOMDocument-&gt; load方法是否返回TRUE。也许你的XML文件在DOMDocument的角度来看是无效的。 尝试添加:
function readXMLFile(){
$doc = new DOMDocument();
$res = $doc->load('events.xml');
if (!$res) {
echo("Failed to parse XML\n");
return false
}
...
无论如何,这种验证是一种很好的方式。 如果它确实返回FALSE,那么您应该验证XML的结构。 你可以添加
error_reporting(E_ALL);
在PHP代码的开头某处。这将生成PHP解释器的所有警告和通知,因此它可能有助于理解错误。