无法遍历PHP中的XML节点

时间:2018-10-01 18:59:55

标签: php xml

我有一个用于存储评论的文件。文件名为 comments.xml

<?xml version="1.0" encoding="utf-8"?>
<comment>
  <user>User4251</user>
  <date>02.10.2018</date>
  <text>Comment body goes here</text>
</comment>
<comment>
  <user>User8650</user>
  <date>01.10.2018</date>
  <text>Comment body goes here</text>
</comment>

要遍历XML树,我使用W3Schools中给出的示例(对参数进行了一些修改)。该代码包含在 index.php 中:

<?php
  $xml = simplexml_load_file("comments.xml") or die("Error: Cannot create object");
  foreach($xml -> children() as $comments) { 
    echo $comments -> user . ", "; 
    echo $comments -> date . ", "; 
    echo $comments -> text . "<br>";
  }
?>

根据示例,我期望:

User4251, 02.10.2018, Comment body goes here
User8650, 02.10.2018, Comment body goes here

但是,我遇到了三个错误:

  

警告::simplexml_load_file():comments.xml:7:解析器错误: 192.168.0.1/users/User8650/index.php中文档末尾的额外内容 2

行的strong>      

警告::simplexml_load_file():在 2

行的 192.168.0.1/users/User8650/index.php 中      

警告: 192.168.0.1/users/User8650/index.php 中的^在 2

行中的^      

错误:无法创建对象

第四个是由于die()语句引起的。

这个例子是错误的还是我在某个地方出错了?

1 个答案:

答案 0 :(得分:5)

您的XML文档中没有有效的root element。这将起作用:

<root_example>
 <comment>
   <user>User4251</user>
   <date>02.10.2018</date>
   <text>Comment body goes here</text>
  </comment>
  <comment>
   <user>User8650</user>
   <date>01.10.2018</date>
   <text>Comment body goes here</text>
 </comment>
</root_example>