2012-02-29 112 views
2

我有这样PHP错误解析XML(SimpleXML的)

<?xml version="1.0"?> 
<test>Total</test> 
<books> 
    <mybook id="1"> 
     <blabla>jkjk</blabla> 
    </mybook>¨ 
</books> 

一个XML文件,如果我分析它像用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文件开始工作....

任何想法?? 谢谢

回答

2

这是它写的。额外的内容。

它是什么? ¨之后</mybook>。所以这个文件是无效的。如果你希望它有效,它看起来像:

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

注意:一个XML必须总是一个,正好一个根元素。

+0

这是*也*无效! – 2012-02-29 14:56:48

+0

对,纠正 – axiomer 2012-02-29 14:58:14

+0

谁不想这么做:为什么?这是完全正确的答案。与Petter's(+4)几乎相同,但*之前一分钟*。任何原因?我想知道。 – axiomer 2012-02-29 14:59:23

13

你需要有一个根元素在你的XML,即

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

你的XML是无效的。 XML必须只有一个根元素。

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