Reputation: 475
I was trying to display record from XML file. But I get following error:
A PHP Error was encountered Severity: Notice Message: Trying to get property of non-object Filename: controllers/events.php Line Number: 67
xml file
<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>
In my controler '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;
}
In view 'events/eventlistxml.php'
<?php
foreach($events as $key=>$val):
echo $val['date']."<br />";
echo $val['venue']."<br />";
echo $val['url']."<br />";
endforeach;
?>
This is due to url pattern in xml cgi-bin/phts.sh/x/xbevwindex.p?xtren=1234&xmlac=np&tpl=sp11 Is there any method to resolve this error?
Thank you for your kind support.
Upvotes: 1
Views: 2045
Reputation: 10517
I would recommend to check if DOMDocument->load method returns TRUE first. Maybe your XML file is invalid in DOMDocument's perspective. Try to add this:
function readXMLFile(){
$doc = new DOMDocument();
$res = $doc->load('events.xml');
if (!$res) {
echo("Failed to parse XML\n");
return false
}
...
Anyway, such verification is a good manner. If it really returns FALSE, you should validate the structure of your XML. You may add
error_reporting(E_ALL);
somewhere in the beginning of your php code. This will generate all warnings and notices of PHP-interpreter, so it may be helpful in understaning what's wrong.
Upvotes: 1