PHP解析XML出错(simpleXML)

3
我有一个像这样的XML文件。
<?xml version="1.0"?>
<test>Total</test>
<books>
    <mybook id="1">
        <blabla>jkjk</blabla>
    </mybook>¨
</books>

如果我使用SimpleXML这样解析它
$xml = simplexml_load_file($filename); 

它说:

simplexml_load_file() [function.simplexml-load-file]: ./uploads/test.xml:3: parser error : Extra content at the end of the document

但是如果我移除了这个元素

<test>Total</test>

在XML文件的开头它可以正常工作...... 有任何想法吗?谢谢。
3个回答

14

你的xml文件需要拥有一个根元素,例如:

<document>
    <test>Total</test>
    <books>
        <mybook id="1">
            <blabla>jkjk</blabla>
        </mybook>
    </books>
</document>

2

这是原文。多余的内容。

那么,这是什么?是</mybook>之后的¨。所以这个文件不是有效的。如果您想要它有效,应该像这样写:

    <bookinfo>
   <test>Total</test>
    <books>
        <mybook id="1">
            <blabla>jkjk</blabla>
        </mybook>
    </books>
    </bookinfo>

一条注释:XML 必须始终是一个、确切的根元素。

谁删了这个评论?为什么?这是完全正确的答案。几乎和彼得的(+4)一样,只不过提前了一分钟。有什么原因吗?我想知道。 - axiomer
@axiomer 在你纠正之前,我已经给它点了踩,但在我来得及取消之前就看到了纠正。一个浅显的编辑就可以解决这个问题。 - Josh

2

您的XML无效。XML必须有一个且仅有一个根元素。

解析器抱怨的“额外内容”是<books>元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接