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

时间:2012-02-10 16:30:30

标签: php xml parsing simplexml

以下格式是否适用于XML?我正在尝试使用simplexml_load_file在PHP中解析文件,但仍然收到一条错误,指出第3行文档末尾有“额外内容”。

这是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>

2 个答案:

答案 0 :(得分:6)

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

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

<data>及其后面的所有内容都是错误的。

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

您还需要更正<department></dep_name>,因为您似乎已经在创建它的过程中改变了元素的名称。

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

答案 1 :(得分:2)

你需要为你的结构设一个根:

<?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解析器会认为你的root是<title>,而且你的所有信息都包含在其中。

此外,<department>需要</department>关闭,这已反映在我的回答中。