PHP-XML:尝试获取非对象的属性
我试图显示XML文件中的记录。但我得到以下错误: 遇到PHP错误严重性:注意 消息:正在尝试获取非对象的属性 文件名:controllers/events.php行号:67 xml文件PHP-XML:尝试获取非对象的属性,php,xml,Php,Xml,我试图显示XML文件中的记录。但我得到以下错误: 遇到PHP错误严重性:注意 消息:正在尝试获取非对象的属性 文件名:controllers/events.php行号:67 xml文件 <events> <event> <date>15/06/11</date> <venue>Parijs - Frankfort</venue> <name>SuperRunner 2011<
<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/eventlistxml.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;
}
<?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?xtren=1234&xmlac=np&tpl=sp11中的url模式造成的
是否有解决此错误的方法
感谢您的支持。我建议先检查DOMDocument->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解释器的所有警告和通知,因此可能有助于了解错误。我建议先检查DOMDocument->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解释器的所有警告和通知,因此可能有助于了解错误所在。文件中的行号:67在events.PHP中的哪行67在events.PHP中的哪行67在filewhere中的行号:67在events.PHP中的哪行67在heximal中,但它显示错误“无法解析XML”。上面的代码显示了除URL之外的所有记录。当我删除子项时,错误消失。我看到发生了什么。您需要转义斜杠符号,因为它是保留的XML符号,因此出于合理的原因,解析失败。尝试以这种方式指定URL值:cgi-bin\/phts.sh\/x\/xbevwindex.p?xtren=1234&;xmlac=np&;tpl=SP11表示heximal,但显示错误“无法解析XML”。上面的代码显示了除URL之外的所有记录。当我删除子项时,错误消失。我看到发生了什么。您需要转义斜杠符号,因为它是保留的XML符号,因此出于合理的原因,解析失败。尝试以这种方式指定URL值:cgi-bin\/phts.sh\/x\/xbevwindex.p?xtren=1234&;xmlac=np&;tpl=sp11