Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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/0/xml/14.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 - Fatal编程技术网

PHP-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<

我试图显示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&amp;xmlac=np&amp;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