这是用于PHP解析的正确XML格式吗?

问题描述:

以下格式是否适用于XML?我试图使用simplexml_load_file解析PHP中的文件,但不断收到错误消息,指出'第3行文档末尾有额外内容'。这是用于PHP解析的正确XML格式吗?

下面是XML文件:

<?xml version="1.0"?> 
    <title>Test File</title> 
    <data> 
    <record id="1"> 
     <department> 
     <name>ACME</name> 
     <number>5</number> 
     </dep_name> 
     <floor> 
     <name>ACME Floor</name> 
     <number>5</number> 
     </floor> 
    </record> 
    </data> 
+3

您打开一个''但是关闭一个'' – Mikhail 2012-02-10 16:32:12

+0

好的,谢谢! – user1092780 2012-02-10 16:32:56

+1

Aww,不要修改OP,它会混淆读者的其他部分,以及具有相同问题的Google搜索者 – Mikhail 2012-02-10 16:34:14

的XML文档必须由单个根元素及其后代的。

您的第一个开始标签是<title>。它有一个文本节点作为其唯一的后代。然后你有一个</title>标签,它结束根元素,从而结束文档。

<data>以下的所有内容都是错误的。

您可能希望创建一个新的元素类型作为根(并且包装整个文档,不包括XML声明)。

您还需要更正<department></dep_name>,因为您似乎已通过创建元素的中途更改了该元素的名称。

您应该通过a validatorlint运行您的代码,因为这会突出显示错误。

+1

好的,所以在这种情况下,只要我创建一个封装了'

'和' <data>'那么它将能够正确解析。 – <span class="text-secondary"> <small> <a rel="noopener">user1092780</a></small></span> <span>2012-02-10 16:34:53</span> </data>
+0

@ user1092780:是的,应该可以工作:-) – 2012-02-10 16:36:10

+0

是的,这就是我所说的“你可能想要创建一个新的元素类型作为根。” – Quentin 2012-02-10 16:36:44

,你需要有一个根为您的结构:

<?xml version="1.0"?> 
<xml> 
    <title>Test File</title> 
    <data> 
     <record id="1"> 
      <department> 
       <name>ACME</name> 
       <number>5</number> 
      </department> 
      <floor> 
       <name>ACME Floor</name> 
       <number>5</number> 
      </floor> 
     </record> 
    </data> 
</xml> 

,否则你的XML解析器会认为你的根是<title>,并且在它所有的信息都包含。

另外,<department>需要关闭</department>,这已反映在我的答案。